largefiles: don't print files as both large and normal in addremove dryruns
authorMatt Harbison <matt_harbison@yahoo.com>
Wed, 31 Dec 2014 18:39:41 -0500
changeset 23769 bb3ee61cfaa1
parent 23768 6b1428e55728
child 23770 50f0096a7346
largefiles: don't print files as both large and normal in addremove dryruns
hgext/largefiles/overrides.py
tests/test-largefiles-misc.t
--- 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