D3452: context: convert to hex for error message only for 20-byte changeid

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Sun May 6 00:51:14 EDT 2018


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Now that 20-byte strings unambiguously mean binary (or a bug), we can
  specialize the conversion to hex for that case.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3452

AFFECTED FILES
  mercurial/context.py

CHANGE DETAILS

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -10,7 +10,6 @@
 import errno
 import filecmp
 import os
-import re
 import stat
 
 from .i18n import _
@@ -51,8 +50,6 @@
 
 propertycache = util.propertycache
 
-nonascii = re.compile(br'[^\x21-\x7f]').search
-
 class basectx(object):
     """A basectx object represents the common logic for its children:
     changectx: read-only context that is already present in the repo,
@@ -420,6 +417,7 @@
                         and changeid in repo.unfiltered().dirstate.parents()):
                         msg = _("working directory has unknown parent '%s'!")
                         raise error.Abort(msg % short(changeid))
+                    changeid = hex(changeid) # for the error message
 
             elif len(changeid) == 40:
                 try:
@@ -432,11 +430,6 @@
                     pass
 
             # lookup failed
-            try:
-                if len(changeid) == 20 and nonascii(changeid):
-                    changeid = hex(changeid)
-            except TypeError:
-                pass
         except (error.FilteredIndexError, error.FilteredLookupError):
             raise error.FilteredRepoLookupError(_("filtered revision '%s'")
                                                 % changeid)



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list