[PATCH 1 of 5 RFC] lfs: convert '{lfs_files}' keyword to a hybrid list

Matt Harbison mharbison72 at gmail.com
Sun Jan 14 23:58:48 EST 2018


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1515962350 18000
#      Sun Jan 14 15:39:10 2018 -0500
# Node ID 47840d8f396120e9fbfe74f874abd6b34725d807
# Parent  3f5167faeb5d1f28939eaf2c2825bb65f67a2458
lfs: convert '{lfs_files}' keyword to a hybrid list

This will allow more attributes about the file to be queried.

diff --git a/hgext/lfs/__init__.py b/hgext/lfs/__init__.py
--- a/hgext/lfs/__init__.py
+++ b/hgext/lfs/__init__.py
@@ -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: {
+        'lfs_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'))])
diff --git a/tests/test-lfs.t b/tests/test-lfs.t
--- a/tests/test-lfs.t
+++ b/tests/test-lfs.t
@@ -859,6 +859,11 @@
   oid sha256:5bb8341bee63b3649f222b2215bde37322bea075a30575aa685d8f8d21c77024
   size 29
   x-is-binary 0
+  $ hg --cwd convert_lfs log -r 'all()' -T '{rev}: {lfs_files % "{lfs_file}\n"}'
+  0: a1
+  1: a2
+  2: a2
+
   $ grep 'lfs' convert_lfs/.hg/requires
   lfs
 


More information about the Mercurial-devel mailing list