--- a/mercurial/localrepo.py Thu Jan 30 23:12:03 2014 -0800
+++ b/mercurial/localrepo.py Thu Jan 30 16:12:49 2014 -0800
@@ -1659,89 +1659,7 @@
return r
def pull(self, remote, heads=None, force=False):
- if remote.local():
- missing = set(remote.requirements) - self.supported
- if missing:
- msg = _("required features are not"
- " supported in the destination:"
- " %s") % (', '.join(sorted(missing)))
- raise util.Abort(msg)
-
- # don't open transaction for nothing or you break future useful
- # rollback call
- tr = None
- trname = 'pull\n' + util.hidepassword(remote.url())
- lock = self.lock()
- try:
- tmp = discovery.findcommonincoming(self.unfiltered(), remote,
- heads=heads, force=force)
- common, fetch, rheads = tmp
- if not fetch:
- self.ui.status(_("no changes found\n"))
- result = 0
- else:
- tr = self.transaction(trname)
- if heads is None and list(common) == [nullid]:
- self.ui.status(_("requesting all changes\n"))
- elif heads is None and remote.capable('changegroupsubset'):
- # issue1320, avoid a race if remote changed after discovery
- heads = rheads
-
- if remote.capable('getbundle'):
- # TODO: get bundlecaps from remote
- cg = remote.getbundle('pull', common=common,
- heads=heads or rheads)
- elif heads is None:
- cg = remote.changegroup(fetch, 'pull')
- elif not remote.capable('changegroupsubset'):
- raise util.Abort(_("partial pull cannot be done because "
- "other repository doesn't support "
- "changegroupsubset."))
- else:
- cg = remote.changegroupsubset(fetch, heads, 'pull')
- result = self.addchangegroup(cg, 'pull', remote.url())
-
- # compute target subset
- if heads is None:
- # We pulled every thing possible
- # sync on everything common
- subset = common + rheads
- else:
- # We pulled a specific subset
- # sync on this subset
- subset = heads
-
- # Get remote phases data from remote
- remotephases = remote.listkeys('phases')
- publishing = bool(remotephases.get('publishing', False))
- if remotephases and not publishing:
- # remote is new and unpublishing
- pheads, _dr = phases.analyzeremotephases(self, subset,
- remotephases)
- phases.advanceboundary(self, phases.public, pheads)
- phases.advanceboundary(self, phases.draft, subset)
- else:
- # Remote is old or publishing all common changesets
- # should be seen as public
- phases.advanceboundary(self, phases.public, subset)
-
- def gettransaction():
- if tr is None:
- return self.transaction(trname)
- return tr
-
- obstr = obsolete.syncpull(self, remote, gettransaction)
- if obstr is not None:
- tr = obstr
-
- if tr is not None:
- tr.close()
- finally:
- if tr is not None:
- tr.release()
- lock.release()
-
- return result
+ return exchange.pull (self, remote, heads, force)
def checkpush(self, force, revs):
"""Extensions can override this function if additional checks have