lfs: teach the 'lfs()' fileset to handle removed files
The callstatus setting is required to notice the removal of 'lfs.test' in rev 6
in the tests, even though this isn't directly calling mctx.status(). However,
it's not needed to get the results in the tests for `hg status`, so I'm probably
missing something.
--- a/hgext/lfs/__init__.py Sat Jan 27 19:22:15 2018 -0500
+++ b/hgext/lfs/__init__.py Sat Jan 27 19:02:33 2018 -0500
@@ -350,13 +350,13 @@
# when writing a bundle via "hg bundle" command, upload related LFS blobs
wrapfunction(bundle2, 'writenewbundle', wrapper.writenewbundle)
-@filesetpredicate('lfs()')
+@filesetpredicate('lfs()', callstatus=True)
def lfsfileset(mctx, x):
"""File that uses LFS storage."""
# i18n: "lfs" is a keyword
fileset.getargs(x, 0, 0, _("lfs takes no arguments"))
return [f for f in mctx.subset
- if wrapper.pointerfromctx(mctx.ctx, f) is not None]
+ if wrapper.pointerfromctx(mctx.ctx, f, removed=True) is not None]
@templatekeyword('lfs_files')
def lfsfiles(repo, ctx, **args):
--- a/tests/test-lfs.t Sat Jan 27 19:22:15 2018 -0500
+++ b/tests/test-lfs.t Sat Jan 27 19:02:33 2018 -0500
@@ -162,6 +162,11 @@
$ hg mv large l
$ hg mv small s
+ $ hg status 'set:removed()'
+ R large
+ R small
+ $ hg status 'set:removed() & lfs()'
+ R large
$ hg commit -m 'renames'
$ hg files -r . 'set:copied()'
@@ -169,6 +174,11 @@
s
$ hg files -r . 'set:copied() & lfs()'
l
+ $ hg status --change . 'set:removed()'
+ R large
+ R small
+ $ hg status --change . 'set:removed() & lfs()'
+ R large
$ echo SHORT > l
$ echo BECOME-LARGER-FROM-SHORTER > s
@@ -1042,11 +1052,11 @@
2 lfs.catchall: sha256:d4ec46c2869ba22eceb42a729377432052d9dd75d82fc40390ebaadecee87ee9
2 lfs.test: sha256:5489e6ced8c36a7b267292bde9fd5242a5f80a7482e8f23fa0477393dfaa4d6c
-TODO: This should notice the deleted lfs files in rev 6
$ hg log -r 'file("set:lfs()")' -T '{rev} {join(lfs_files, ", ")}\n'
2 lfs.catchall, lfs.test
3 lfs.catchall, lfs.test
5 lfs.test
+ 6 lfs.test
$ cd ..