diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py --- a/hgext/largefiles/reposetup.py +++ b/hgext/largefiles/reposetup.py @@ -182,6 +182,13 @@ def reposetup(ui, repo): else: added.append(lfile) + # at this point, 'removed' contains largefiles + # marked as 'R' in the working context. + # then, largefiles not managed also in the target + # context should be excluded from 'removed'. + removed = [lfile for lfile in removed + if lfutil.standin(lfile) in ctx1] + # Standins no longer found in lfdirstate has been # removed for standin in ctx1.walk(lfutil.getstandinmatcher(self)): diff --git a/tests/test-largefiles-update.t b/tests/test-largefiles-update.t --- a/tests/test-largefiles-update.t +++ b/tests/test-largefiles-update.t @@ -543,4 +543,13 @@ changed, even if it is aborted by confli $ cat largeX largeX +Test that "hg status" doesn't show removal of largefiles not managed +in the target context. + + $ hg update -q -C 4 + $ hg remove largeX + $ hg status -A largeX + R largeX + $ hg status -A --rev '.^1' largeX + $ cd ..