diff -r 75b43843eb4d -r c9339efed653 mercurial/hg.py --- a/mercurial/hg.py Fri Oct 26 09:29:50 2012 +0200 +++ b/mercurial/hg.py Fri Oct 26 12:36:15 2012 +0200 @@ -409,14 +409,20 @@ 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)