--- a/hgext/largefiles/overrides.py Wed Dec 31 18:31:18 2014 -0500
+++ b/hgext/largefiles/overrides.py Wed Dec 31 18:39:41 2014 -0500
@@ -34,10 +34,14 @@
m.matchfn = lambda f: lfile(f) and origmatchfn(f)
return m
-def composenormalfilematcher(match, manifest):
+def composenormalfilematcher(match, manifest, exclude=None):
+ excluded = set()
+ if exclude is not None:
+ excluded.update(exclude)
+
m = copy.copy(match)
notlfile = lambda f: not (lfutil.isstandin(f) or lfutil.standin(f) in
- manifest)
+ manifest or f in excluded)
m._files = filter(notlfile, m._files)
m._fmap = set(m._files)
m._always = False
@@ -1132,11 +1136,11 @@
removelargefiles(repo.ui, repo, True, m, **opts)
# Call into the normal add code, and any files that *should* be added as
# largefiles will be
- addlargefiles(repo.ui, repo, True, matcher, **opts)
+ added, bad = addlargefiles(repo.ui, repo, True, matcher, **opts)
# Now that we've handled largefiles, hand off to the original addremove
# function to take care of the rest. Make sure it doesn't do anything with
# largefiles by passing a matcher that will ignore them.
- matcher = composenormalfilematcher(matcher, repo[None].manifest())
+ matcher = composenormalfilematcher(matcher, repo[None].manifest(), added)
return orig(repo, matcher, prefix, opts, dry_run, similarity)
# Calling purge with --all will cause the largefiles to be deleted.
--- a/tests/test-largefiles-misc.t Wed Dec 31 18:31:18 2014 -0500
+++ b/tests/test-largefiles-misc.t Wed Dec 31 18:39:41 2014 -0500
@@ -262,7 +262,6 @@
removing subrepo/large.txt
adding subrepo/normal.txt
adding subrepo/renamed-large.txt
- adding large.dat
$ hg status -S
! subrepo/large.txt
? large.dat
@@ -295,7 +294,6 @@
removing subrepo/large.txt
adding subrepo/normal.txt
adding subrepo/renamed-large.txt
- adding large.dat
$ cd statusmatch
$ mv subrepo/renamed-large.txt subrepo/large.txt