comparison mercurial/hg.py @ 190:3dd5ce2fddb6

merge: short-circuit search for merge into empty repo -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 merge: short-circuit search for merge into empty repo We should have 3 cases for merge: - - we have no changesets - - we have less than half the changesets - - we have more than half the changesets For no changesets, we can immediately tell that we need everything. This happens when we initially branch from a remote repo, so we simply shortcircuit the search and grab everything from the root When we're actually tracking a project, we should generally have most of the changesets, so the current search algorithm should minimize searching. It should rarely occur that upstreams gets far ahead of us, in which case, we suffer a longer search. manifest hash: eabd55841b03225176ea72b985aad36431a438a9 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCmfajywK+sNU5EO8RAuyKAKCf7Nw6XSK5HEzbrZae7Q06e3dk4wCgjbK6 YUTEfkpPP1h3mNHIHRKz+aI= =eGMq -----END PGP SIGNATURE-----
author mpm@selenic.com
date Sun, 29 May 2005 09:06:43 -0800
parents aa9a0d50e612
children d7e859cf2f1b
comparison
equal deleted inserted replaced
189:37625132fe37 190:3dd5ce2fddb6
523 break 523 break
524 524
525 return nl 525 return nl
526 526
527 def getchangegroup(self, remote): 527 def getchangegroup(self, remote):
528 tip = remote.branches([])[0]
529 self.ui.debug("remote tip branch is %s:%s\n" %
530 (short(tip[0]), short(tip[1])))
531 m = self.changelog.nodemap 528 m = self.changelog.nodemap
532 unknown = [tip]
533 search = [] 529 search = []
534 fetch = [] 530 fetch = []
535 seen = {} 531 seen = {}
536 seenbranch = {} 532 seenbranch = {}
533 tip = remote.branches([])[0]
534 self.ui.debug("remote tip branch is %s:%s\n" %
535 (short(tip[0]), short(tip[1])))
536
537 # if we have an empty repo, fetch everything
538 if self.changelog.tip() == nullid:
539 return remote.changegroup([nullid])
540
541 # otherwise, assume we're closer to the tip than the root
542 unknown = [tip]
537 543
538 if tip[0] in m: 544 if tip[0] in m:
539 self.ui.note("nothing to do!\n") 545 self.ui.note("nothing to do!\n")
540 return None 546 return None
541 547