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.
| Alphare | |
| marmoute |
| hg-reviewers |
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.
| Automatic diff as part of commit; lint not applicable. |
| Automatic diff as part of commit; unit tests not applicable. |
| Path | Packages | |||
|---|---|---|---|---|
| M | mercurial/debugcommands.py (3 lines) | |||
| M | tests/test-tags.t (4 lines) |
| ui.write(node2str(node)) | ui.write(node2str(node)) | ||||
| ui.write(b'\n') | ui.write(b'\n') | ||||
| @command(b'debugtagscache', []) | @command(b'debugtagscache', []) | ||||
| def debugtagscache(ui, repo): | def debugtagscache(ui, repo): | ||||
| """display the contents of .hg/cache/hgtagsfnodes1""" | """display the contents of .hg/cache/hgtagsfnodes1""" | ||||
| cache = tagsmod.hgtagsfnodescache(repo.unfiltered()) | cache = tagsmod.hgtagsfnodescache(repo.unfiltered()) | ||||
| flog = repo.file(b'.hgtags') | |||||
| for r in repo: | for r in repo: | ||||
| node = repo[r].node() | node = repo[r].node() | ||||
| tagsnode = cache.getfnode(node, computemissing=False) | tagsnode = cache.getfnode(node, computemissing=False) | ||||
| if tagsnode: | if tagsnode: | ||||
| tagsnodedisplay = hex(tagsnode) | tagsnodedisplay = hex(tagsnode) | ||||
| if not flog.hasnode(tagsnode): | |||||
| tagsnodedisplay += b' (unknown node)' | |||||
| elif tagsnode is None: | elif tagsnode is None: | ||||
| tagsnodedisplay = b'missing' | tagsnodedisplay = b'missing' | ||||
| else: | else: | ||||
| tagsnodedisplay = b'invalid' | tagsnodedisplay = b'invalid' | ||||
| ui.write(b'%d %s %s\n' % (r, hex(node), tagsnodedisplay)) | ui.write(b'%d %s %s\n' % (r, hex(node), tagsnodedisplay)) | ||||
| 0040: 78 ee 5a 2d ad bc 94 3d 6f a4 50 21 7d 3b 71 8c |x.Z-...=o.P!};q.| | 0040: 78 ee 5a 2d ad bc 94 3d 6f a4 50 21 7d 3b 71 8c |x.Z-...=o.P!};q.| | ||||
| 0050: 96 4e f3 7b 89 e5 50 eb da fd 57 89 e7 6c e1 b0 |.N.{..P...W..l..| | 0050: 96 4e f3 7b 89 e5 50 eb da fd 57 89 e7 6c e1 b0 |.N.{..P...W..l..| | ||||
| 0060: 0c 19 2d 7d 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |..-}.....1....B(| | 0060: 0c 19 2d 7d 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |..-}.....1....B(| | ||||
| 0070: 78 ee 5a 2d ad bc 94 3d 8d bf e6 0e 0c 04 f2 a8 |x.Z-...=........| | 0070: 78 ee 5a 2d ad bc 94 3d 8d bf e6 0e 0c 04 f2 a8 |x.Z-...=........| | ||||
| 0080: de ad de 17 fa b7 42 28 78 ee 5a 2d ad bc 94 3d |......B(x.Z-...=| | 0080: de ad de 17 fa b7 42 28 78 ee 5a 2d ad bc 94 3d |......B(x.Z-...=| | ||||
| $ hg debugtagscache | tail -2 | $ hg debugtagscache | tail -2 | ||||
| 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | ||||
| 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (unknown node) | ||||
| $ rm -f .hg/cache/tags2-visible | $ rm -f .hg/cache/tags2-visible | ||||
| $ hg debugtagscache | tail -2 | $ hg debugtagscache | tail -2 | ||||
| 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | ||||
| 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8deadde17fab7422878ee5a2dadbc943d (unknown node) | ||||
| $ hg tags | $ hg tags | ||||
| abort: data/.hgtags.i@0c04f2a8deadde17fab7422878ee5a2dadbc943d: no match found | abort: data/.hgtags.i@0c04f2a8deadde17fab7422878ee5a2dadbc943d: no match found | ||||
| [50] | [50] | ||||
| BUG: Unless this file is restored, the `hg tags` in the next unix-permissions | BUG: Unless this file is restored, the `hg tags` in the next unix-permissions | ||||
| conditional will fail: "abort: data/.hgtags.i@0c04f2a8dead: no match found" | conditional will fail: "abort: data/.hgtags.i@0c04f2a8dead: no match found" | ||||