# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2021-02-15 11:38:18 # Node ID e4e971abb6a35358d06122e5df927c80bab54e83 # Parent 9ea6b75b4a95f9f98aed6c895bb92a80f6e824e9 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 diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -3865,11 +3865,14 @@ def debugsuccessorssets(ui, repo, *revs, 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: 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 @@ debug command hides the corruption, both $ 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