Mercurial > hg
diff mercurial/debugcommands.py @ 46495:5aac1a1a5beb
tagcache: distinguish between invalid and missing entries
The TortoiseHg repo has typically not had a newly applied tag accessible by name
for recent releases, for unknown reasons. Deleting and rebuilding the tag cache
doesn't fix it, though deleting the cache and running `hg log -r $new_tag` does.
Eventually the situation does sort itself out for new clones from the server.
In an effort to figure out what the issue is, Pierre-Yves David suggested
listing these entries in the debug output more specifically.
This isn't complete yet- the second test change that says "missing" is more like
"invalid", since it was truncated. The problem there is the code that reads the
raw array truncates any partial records and then fills it with 0xFF, which
signifies that it is missing. As a side note, that means the check for the
length when validating an existing entry never fails.
Differential Revision: https://phab.mercurial-scm.org/D9811
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 24 Dec 2020 11:21:23 -0500 |
parents | c2435280ca63 |
children | 9306a16ca964 |
line wrap: on
line diff
--- a/mercurial/debugcommands.py Thu Feb 11 20:36:46 2021 -0800 +++ b/mercurial/debugcommands.py Thu Dec 24 11:21:23 2020 -0500 @@ -3868,7 +3868,13 @@ for r in repo: node = repo[r].node() tagsnode = cache.getfnode(node, computemissing=False) - tagsnodedisplay = hex(tagsnode) if tagsnode else b'missing/invalid' + if tagsnode: + tagsnodedisplay = hex(tagsnode) + elif tagsnode is False: + tagsnodedisplay = b'invalid' + else: + tagsnodedisplay = b'missing' + ui.write(b'%d %s %s\n' % (r, hex(node), tagsnodedisplay))