D3119: commands: don't violate storage abstractions in `manifest --all`
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Fri Apr 6 00:51:43 UTC 2018
indygreg updated this revision to Diff 7760.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D3119?vs=7701&id=7760
REVISION DETAIL
https://phab.mercurial-scm.org/D3119
AFFECTED FILES
mercurial/commands.py
tests/test-convert-git.t
tests/test-manifest.t
CHANGE DETAILS
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:
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
@@ -881,7 +881,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/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()
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list