diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -34,10 +34,14 @@ def composelargefilematcher(match, manif 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 @@ def scmutiladdremove(orig, repo, matcher 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. diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t --- a/tests/test-largefiles-misc.t +++ b/tests/test-largefiles-misc.t @@ -262,7 +262,6 @@ Add a normal file to the subrepo, then t 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 @@ Add a normal file to the subrepo, then t 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