diff -r bbcd2e478391 -r 6bb940de4c4c hgext/lfs/__init__.py --- 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