Patchwork D12552: rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"

login
register
mail settings
Submitter phabricator
Date April 13, 2022, 8:42 p.m.
Message ID <differential-rev-PHID-DREV-5cn45o57y2bpnrvsnon4-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50900/
State New
Headers show

Comments

phabricator - April 13, 2022, 8:42 p.m.
spectral created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  If a repo is sufficiently large, a six digit number "hash prefix" can somewhat
  easily reference an ambiguous hash prefix.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

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

AFFECTED FILES
  mercurial/rewriteutil.py
  tests/test-rebase-inmemory.t

CHANGE DETAILS




To: spectral, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-rebase-inmemory.t b/tests/test-rebase-inmemory.t
--- a/tests/test-rebase-inmemory.t
+++ b/tests/test-rebase-inmemory.t
@@ -1027,8 +1027,7 @@ 
   $ hg ci -qAm 'The previous two (parentless) commits had a hash prefix of b04363. Check that rewrite_hash_refs will not fail because of that.'
   $ hg rebase -r . -d 5
   rebasing 8:5c4cdabf5769 tip "The previous two (parentless) commits had a hash prefix of b04363. Check that rewrite_hash_refs will not fail because of that."
-  abort: 00changelog@b04363: ambiguous identifier
-  [50]
+  saved backup bundle to $TESTTMP/keep_merge/.hg/strip-backup/5c4cdabf5769-335e1828-rebase.hg
 
   $ cd ..
 
diff --git a/mercurial/rewriteutil.py b/mercurial/rewriteutil.py
--- a/mercurial/rewriteutil.py
+++ b/mercurial/rewriteutil.py
@@ -215,9 +215,9 @@ 
     for h in hashes:
         try:
             fullnode = scmutil.resolvehexnodeidprefix(unfi, h)
-        except error.WdirUnsupported:
-            # Someone has an fffff... in a commit message we're
-            # rewriting. Don't try rewriting that.
+        except (error.WdirUnsupported, error.AmbiguousPrefixLookupError):
+            # Someone has an fffff... or some other prefix that's ambiguous in a
+            # commit message we're rewriting. Don't try rewriting that.
             continue
         if fullnode is None:
             continue