Mercurial > hg
changeset 50482:1fc25227b068
store: actually tag tree manifest revlogs as manifest revlogs
It turn out we have been mislabeling these for a long while. This is now fixed.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 15 May 2023 08:59:22 +0200 |
parents | b08243dbc2e3 |
children | 60e613f6a229 |
files | mercurial/store.py |
diffstat | 1 files changed, 25 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/store.py Mon May 15 08:59:06 2023 +0200 +++ b/mercurial/store.py Mon May 15 08:59:22 2023 +0200 @@ -639,18 +639,23 @@ decoded cause an exception. When it is provided, it should be a list and the filenames that can't be decoded are added to it instead. This is very rarely needed.""" - files = self._walk(b'data', True) + self._walk(b'meta', True) - files = (f for f in files if f[1][0] is not None) - for revlog, details in _gather_revlog(files): - for ext, (t, s) in sorted(details.items()): - u = revlog + ext - yield RevlogStoreEntry( - unencoded_path=u, - revlog_type=FILEFLAGS_FILELOG, - is_revlog_main=bool(t & FILEFLAGS_REVLOG_MAIN), - is_volatile=bool(t & FILEFLAGS_VOLATILE), - file_size=s, - ) + dirs = [ + (b'data', FILEFLAGS_FILELOG), + (b'meta', FILEFLAGS_MANIFESTLOG), + ] + for base_dir, rl_type in dirs: + files = self._walk(base_dir, True) + files = (f for f in files if f[1][0] is not None) + for revlog, details in _gather_revlog(files): + for ext, (t, s) in sorted(details.items()): + u = revlog + ext + yield RevlogStoreEntry( + unencoded_path=u, + revlog_type=rl_type, + is_revlog_main=bool(t & FILEFLAGS_REVLOG_MAIN), + is_volatile=bool(t & FILEFLAGS_VOLATILE), + file_size=s, + ) def topfiles(self) -> Generator[BaseStoreEntry, None, None]: files = reversed(self._walk(b'', False)) @@ -968,13 +973,20 @@ files = (f for f in files if f[1] is not None) by_revlog = _gather_revlog(files) for revlog, details in by_revlog: + if revlog.startswith(b'data/'): + rl_type = FILEFLAGS_FILELOG + elif revlog.startswith(b'meta/'): + rl_type = FILEFLAGS_MANIFESTLOG + else: + # unreachable + assert False, revlog for ext, t in sorted(details.items()): f = revlog + ext if not _matchtrackedpath(f, matcher): continue yield RevlogStoreEntry( unencoded_path=f, - revlog_type=FILEFLAGS_FILELOG, + revlog_type=rl_type, is_revlog_main=bool(t & FILEFLAGS_REVLOG_MAIN), is_volatile=bool(t & FILEFLAGS_VOLATILE), )