diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -3491,19 +3491,13 @@ if rev or node: raise error.Abort(_("can't specify a revision with --all")) - res = [] - # TODO this is a massive layering violation. It assumes the repo is - # backed by revlogs with a well-defined naming scheme. - prefix = "data/" - suffix = ".i" - plen = len(prefix) - slen = len(suffix) - with repo.lock(): - for fn, b, size in repo.store.datafiles(): - if size != 0 and fn[-slen:] == suffix and fn[:plen] == prefix: - res.append(fn[plen:-slen]) + res = set() + for rev in repo: + ctx = repo[rev] + res |= set(ctx.files()) + ui.pager('manifest') - for f in res: + for f in sorted(res): fm.startitem() fm.write("path", '%s\n', f) fm.end() diff --git a/tests/test-convert-git.t b/tests/test-convert-git.t --- a/tests/test-convert-git.t +++ b/tests/test-convert-git.t @@ -878,7 +878,7 @@ $ hg convert -q git-repo6 no-submodules --config convert.git.skipsubmodules=True $ hg -R no-submodules manifest --all - .gitmodules-renamed (no-reposimplestore !) + .gitmodules-renamed convert using a different remote prefix $ git init git-repo7 diff --git a/tests/test-manifest.t b/tests/test-manifest.t --- a/tests/test-manifest.t +++ b/tests/test-manifest.t @@ -68,9 +68,9 @@ l $ hg manifest --all - a (no-reposimplestore !) - b/a (no-reposimplestore !) - l (no-reposimplestore !) + a + b/a + l The next two calls are expected to abort: