mercurial/localrepo.py
changeset 3448 6ca49c5fe268
parent 3443 e6045fc3cd50
child 3450 27ebe4efe98e
equal deleted inserted replaced
3447:ef1032c223e7 3448:6ca49c5fe268
    13 demandload(globals(), "changelog dirstate filelog manifest context")
    13 demandload(globals(), "changelog dirstate filelog manifest context")
    14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
    14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
    15 demandload(globals(), "os revlog time util")
    15 demandload(globals(), "os revlog time util")
    16 
    16 
    17 class localrepository(repo.repository):
    17 class localrepository(repo.repository):
    18     capabilities = ()
    18     capabilities = ('lookup', 'changegroupsubset')
    19 
    19 
    20     def __del__(self):
    20     def __del__(self):
    21         self.transhandle = None
    21         self.transhandle = None
    22     def __init__(self, parentui, path=None, create=0):
    22     def __init__(self, parentui, path=None, create=0):
    23         repo.repository.__init__(self)
    23         repo.repository.__init__(self)
  1239                 return 0
  1239                 return 0
  1240 
  1240 
  1241             if heads is None:
  1241             if heads is None:
  1242                 cg = remote.changegroup(fetch, 'pull')
  1242                 cg = remote.changegroup(fetch, 'pull')
  1243             else:
  1243             else:
       
  1244                 if 'changegroupsubset' not in remote.capabilities:
       
  1245                     raise util.Abort(_("Partial pull cannot be done because other repository doesn't support changegroupsubset."))
  1244                 cg = remote.changegroupsubset(fetch, heads, 'pull')
  1246                 cg = remote.changegroupsubset(fetch, heads, 'pull')
  1245             return self.addchangegroup(cg, 'pull', remote.url())
  1247             return self.addchangegroup(cg, 'pull', remote.url())
  1246         finally:
  1248         finally:
  1247             if mylock:
  1249             if mylock:
  1248                 lock.release()
  1250                 lock.release()