diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -189,8 +189,15 @@ def removelargefiles(ui, repo, isaddremo
                 # are removing the file.
                 if isaddremove:
                     ui.status(_('removing %s\n') % f)
-                util.unlinkpath(repo.wjoin(f), ignoremissing=True)
-            lfdirstate.remove(f)
+
+            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
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,16 @@ verify that large files in subrepos hand
 Add a normal file to the subrepo, then test archiving
 
   $ echo 'normal file' > subrepo/normal.txt
+  $ mv subrepo/large.txt subrepo/renamed-large.txt
+  $ hg -R subrepo addremove --dry-run
+  removing large.txt
+  adding normal.txt
+  adding renamed-large.txt
+  $ hg status -S
+  ! subrepo/large.txt
+  ? subrepo/normal.txt
+  ? subrepo/renamed-large.txt
+  $ mv subrepo/renamed-large.txt subrepo/large.txt
   $ hg -R subrepo add subrepo/normal.txt
 
 Lock in subrepo, otherwise the change isn't archived