Patchwork D10015: debugtagscache: verify that filenode is correct

login
register
mail settings
Submitter phabricator
Date Feb. 17, 2021, 7:44 p.m.
Message ID <differential-rev-PHID-DREV-4loziinnxo44vhajfmy6-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/48333/
State Superseded
Headers show

Comments

phabricator - Feb. 17, 2021, 7:44 p.m.
pulkit created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Previous patch from Matt demonstrates that `debugtagscache` does not warn about
  filenode being invalid which can be caused by a corrupted cache.
  
  We start by showing that it's an invalid node.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  mercurial/debugcommands.py
  tests/test-tags.t

CHANGE DETAILS




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

Patch

diff --git a/tests/test-tags.t b/tests/test-tags.t
--- a/tests/test-tags.t
+++ b/tests/test-tags.t
@@ -444,12 +444,12 @@ 
 
   $ hg debugtagscache | tail -2
   4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
-  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d
+  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (invalid node)
 
   $ rm -f .hg/cache/tags2-visible
   $ hg debugtagscache | tail -2
   4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
-  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d
+  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (invalid node)
 
   $ hg tags
   abort: data/.hgtags.i@0c04f2a8deadde17fab7422878ee5a2dadbc943d: no match found
diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
--- a/mercurial/debugcommands.py
+++ b/mercurial/debugcommands.py
@@ -3870,6 +3870,10 @@ 
         tagsnode = cache.getfnode(node, computemissing=False)
         if tagsnode:
             tagsnodedisplay = hex(tagsnode)
+            try:
+                repo.filectx(b'.hgtags', fileid=tagsnode).data()
+            except error.LookupError:
+                tagsnodedisplay += b' (invalid node)'
         elif tagsnode is None:
             tagsnodedisplay = b'missing'
         else: