Patchwork D3119: commands: don't violate storage abstractions in `manifest --all`

login
register
mail settings
Submitter phabricator
Date April 6, 2018, 12:51 a.m.
Message ID <bd98bf9e2a4beb581168ab46c756b0d6@localhost.localdomain>
Download mbox | patch
Permalink /patch/30420/
State Not Applicable
Headers show

Comments

phabricator - April 6, 2018, 12:51 a.m.
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




To: indygreg, #hg-reviewers
Cc: mercurial-devel

Patch

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()