lfs: convert '{lfs_files}' keyword to a hybrid list
authorMatt Harbison <matt_harbison@yahoo.com>
Sun, 14 Jan 2018 15:39:10 -0500
changeset 35657 8580e5898cb7
parent 35656 c9eb92fb87b7
child 35658 a1222a8cc93b
lfs: convert '{lfs_files}' keyword to a hybrid list This will allow more attributes about the file to be queried.
hgext/lfs/__init__.py
tests/test-lfs.t
--- a/hgext/lfs/__init__.py	Sun Dec 10 21:42:33 2017 +0100
+++ b/hgext/lfs/__init__.py	Sun Jan 14 15:39:10 2018 -0500
@@ -61,9 +61,11 @@
     localrepo,
     minifileset,
     node,
+    pycompat,
     registrar,
     revlog,
     scmutil,
+    templatekw,
     upgrade,
     vfs as vfsmod,
     wireproto,
@@ -221,8 +223,18 @@
 @templatekeyword('lfs_files')
 def lfsfiles(repo, ctx, **args):
     """List of strings. LFS files added or modified by the changeset."""
+    args = pycompat.byteskwargs(args)
+
     pointers = wrapper.pointersfromctx(ctx) # {path: pointer}
-    return sorted(pointers.keys())
+    files = sorted(pointers.keys())
+
+    makemap = lambda v: {
+        'file': v,
+    }
+
+    # TODO: make the separator ', '?
+    f = templatekw._showlist('lfs_file', files, args)
+    return templatekw._hybrid(f, files, makemap, pycompat.identity)
 
 @command('debuglfsupload',
          [('r', 'rev', [], _('upload large files introduced by REV'))])
--- a/tests/test-lfs.t	Sun Dec 10 21:42:33 2017 +0100
+++ b/tests/test-lfs.t	Sun Jan 14 15:39:10 2018 -0500
@@ -859,6 +859,11 @@
   oid sha256:5bb8341bee63b3649f222b2215bde37322bea075a30575aa685d8f8d21c77024
   size 29
   x-is-binary 0
+  $ hg --cwd convert_lfs log -r 'all()' -T '{rev}: {lfs_files % "{file}\n"}'
+  0: a1
+  1: a2
+  2: a2
+
   $ grep 'lfs' convert_lfs/.hg/requires
   lfs