diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -206,12 +206,10 @@ def removelargefiles(ui, repo, isaddremo if not opts.get('dry_run'): if not after: util.unlinkpath(repo.wjoin(f), ignoremissing=True) - lfdirstate.remove(f) if opts.get('dry_run'): return result - lfdirstate.write() remove = [lfutil.standin(f) for f in remove] # If this is being called by addremove, let the original addremove # function handle this. @@ -219,6 +217,12 @@ def removelargefiles(ui, repo, isaddremo for f in remove: util.unlinkpath(repo.wjoin(f), ignoremissing=True) repo[None].forget(remove) + + for f in remove: + lfutil.synclfdirstate(repo, lfdirstate, lfutil.splitstandin(f), + False) + + lfdirstate.write() finally: wlock.release() 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 @@ -250,6 +250,7 @@ verify that large files in subrepos hand Add a normal file to the subrepo, then test archiving $ echo 'normal file' > subrepo/normal.txt + $ touch large.dat $ mv subrepo/large.txt subrepo/renamed-large.txt $ hg -R subrepo addremove --dry-run removing large.txt @@ -257,11 +258,19 @@ Add a normal file to the subrepo, then t adding renamed-large.txt $ hg status -S ! subrepo/large.txt + ? large.dat ? subrepo/normal.txt ? subrepo/renamed-large.txt $ mv subrepo/renamed-large.txt subrepo/large.txt $ hg -R subrepo add subrepo/normal.txt + $ hg addremove + adding large.dat as a largefile + $ rm large.dat + + $ hg addremove + removing large.dat + Lock in subrepo, otherwise the change isn't archived $ hg ci -S -m "add normal file to top level"