hgext/largefiles/overrides.py
changeset 23769 bb3ee61cfaa1
parent 23768 6b1428e55728
child 23782 304e69cb1ee9
--- 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.