debugtagscache: verify that filenode is correct
Previous patch from Matt demonstrates that `debugtagscache` does not warn about
filenode being unknown which can be caused by a corrupted cache.
We start by showing that it's an unknown node.
Differential Revision: https://phab.mercurial-scm.org/D10015
--- a/mercurial/debugcommands.py Thu Dec 24 12:23:46 2020 -0500
+++ b/mercurial/debugcommands.py Mon Feb 15 17:08:18 2021 +0530
@@ -3865,11 +3865,14 @@
def debugtagscache(ui, repo):
"""display the contents of .hg/cache/hgtagsfnodes1"""
cache = tagsmod.hgtagsfnodescache(repo.unfiltered())
+ flog = repo.file(b'.hgtags')
for r in repo:
node = repo[r].node()
tagsnode = cache.getfnode(node, computemissing=False)
if tagsnode:
tagsnodedisplay = hex(tagsnode)
+ if not flog.hasnode(tagsnode):
+ tagsnodedisplay += b' (unknown node)'
elif tagsnode is None:
tagsnodedisplay = b'missing'
else:
--- a/tests/test-tags.t Thu Dec 24 12:23:46 2020 -0500
+++ b/tests/test-tags.t Mon Feb 15 17:08:18 2021 +0530
@@ -444,12 +444,12 @@
$ hg debugtagscache | tail -2
4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
- 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d
+ 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (unknown node)
$ rm -f .hg/cache/tags2-visible
$ hg debugtagscache | tail -2
4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
- 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d
+ 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (unknown node)
$ hg tags
abort: data/.hgtags.i@0c04f2a8deadde17fab7422878ee5a2dadbc943d: no match found