hgext/lfs/__init__.py
changeset 35504 6bb940de4c4c
parent 35452 488634db5928
child 35506 fa865878a849
--- a/hgext/lfs/__init__.py	Sat Dec 23 15:07:24 2017 -0500
+++ b/hgext/lfs/__init__.py	Sat Dec 23 23:51:40 2017 -0500
@@ -43,6 +43,7 @@
     filelog,
     hg,
     localrepo,
+    node,
     registrar,
     revlog,
     scmutil,
@@ -122,13 +123,21 @@
     if 'lfs' not in repo.requirements:
         def checkrequireslfs(ui, repo, **kwargs):
             if 'lfs' not in repo.requirements:
-                ctx = repo[kwargs['node']]
+                last = kwargs.get('node_last')
+                _bin = node.bin
+                if last:
+                    s = repo.set('%n:%n', _bin(kwargs['node']), _bin(last))
+                else:
+                    s = repo.set('%n', _bin(kwargs['node']))
+            for ctx in s:
                 # TODO: is there a way to just walk the files in the commit?
                 if any(ctx[f].islfs() for f in ctx.files() if f in ctx):
                     repo.requirements.add('lfs')
                     repo._writerequirements()
+                    break
 
         ui.setconfig('hooks', 'commit.lfs', checkrequireslfs, 'lfs')
+        ui.setconfig('hooks', 'pretxnchangegroup.lfs', checkrequireslfs, 'lfs')
 
 def wrapfilelog(filelog):
     wrapfunction = extensions.wrapfunction