# HG changeset patch # User Thomas Arendsen Hein # Date 2012-10-26 10:36:15 # Node ID c9339efed65307d619cf9ff9b90bc47df8b08d34 # Parent 75b43843eb4d4302f4584034e2e629e1edafe1a9 clone: make sure to use "@" as bookmark and "default" as branch (issue3677) Before this change a bookmark named "default" or a branch named "@" would cause the wrong changeset to be checked out. The change in output of test-hardlinks.t is due to the fact that no unneeded tag lookups for the tags "@" or "default" happen, therefore the cache file is not created. diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -409,14 +409,20 @@ def clone(ui, peeropts, source, dest=Non if update: if update is not True: checkout = srcpeer.lookup(update) - for test in (checkout, '@', 'default', 'tip'): - if test is None: - continue + uprev = None + if checkout is not None: try: - uprev = destrepo.lookup(test) - break + uprev = destrepo.lookup(checkout) except error.RepoLookupError: - continue + pass + if uprev is None: + try: + uprev = destrepo._bookmarks['@'] + except KeyError: + try: + uprev = destrepo.branchtip('default') + except error.RepoLookupError: + uprev = destrepo.lookup('tip') bn = destrepo[uprev].branch() destrepo.ui.status(_("updating to branch %s\n") % bn) _update(destrepo, uprev) diff --git a/tests/test-hardlinks.t b/tests/test-hardlinks.t --- a/tests/test-hardlinks.t +++ b/tests/test-hardlinks.t @@ -197,7 +197,6 @@ r4 has hardlinks in the working dir (not 2 r4/.hg/00changelog.i 2 r4/.hg/branch 2 r4/.hg/cache/branchheads - 2 r4/.hg/cache/tags 2 r4/.hg/dirstate 2 r4/.hg/hgrc 2 r4/.hg/last-message.txt @@ -228,7 +227,6 @@ Update back to revision 11 in r4 should 2 r4/.hg/00changelog.i 1 r4/.hg/branch 2 r4/.hg/cache/branchheads - 2 r4/.hg/cache/tags 1 r4/.hg/dirstate 2 r4/.hg/hgrc 2 r4/.hg/last-message.txt