diff -r a87dabb053d0 -r 579df5aaa425 mercurial/commands.py --- a/mercurial/commands.py Thu May 25 23:18:02 2017 +0900 +++ b/mercurial/commands.py Thu May 25 23:20:00 2017 +0900 @@ -968,11 +968,16 @@ and not force): raise error.Abort( _("a bookmark cannot have the name of an existing branch")) - if len(mark) > 3 and mark in repo and not force: - repo.ui.warn( - _("bookmark %s matches a changeset hash\n" - "(did you leave a -r out of an 'hg bookmark' command?)\n") % - mark) + if len(mark) > 3 and not force: + try: + shadowhash = (mark in repo) + except error.LookupError: # ambiguous identifier + shadowhash = False + if shadowhash: + repo.ui.warn( + _("bookmark %s matches a changeset hash\n" + "(did you leave a -r out of an 'hg bookmark' command?)\n") + % mark) if delete and rename: raise error.Abort(_("--delete and --rename are incompatible"))