diff mercurial/debugcommands.py @ 46538:c2435280ca63

copy-tracing: add a --compute flag to debugchangedfiles This will help analysis of possible misbehaving cases. Differential Revision: https://phab.mercurial-scm.org/D9946
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 02 Feb 2021 07:02:25 +0100
parents 4f5e9a77ff7a
children 5aac1a1a5beb
line wrap: on
line diff
--- a/mercurial/debugcommands.py	Wed Feb 03 23:23:56 2021 -0800
+++ b/mercurial/debugcommands.py	Tue Feb 02 07:02:25 2021 +0100
@@ -484,14 +484,31 @@
                 ui.write(b'    %s\n' % v)
 
 
-@command(b'debugchangedfiles', [], b'REV')
-def debugchangedfiles(ui, repo, rev):
+@command(
+    b'debugchangedfiles',
+    [
+        (
+            b'',
+            b'compute',
+            False,
+            b"compute information instead of reading it from storage",
+        ),
+    ],
+    b'REV',
+)
+def debugchangedfiles(ui, repo, rev, **opts):
     """list the stored files changes for a revision"""
     ctx = scmutil.revsingle(repo, rev, None)
-    sd = repo.changelog.sidedata(ctx.rev())
-    files_block = sd.get(sidedata.SD_FILES)
-    if files_block is not None:
-        files = metadata.decode_files_sidedata(sd)
+    files = None
+
+    if opts['compute']:
+        files = metadata.compute_all_files_changes(ctx)
+    else:
+        sd = repo.changelog.sidedata(ctx.rev())
+        files_block = sd.get(sidedata.SD_FILES)
+        if files_block is not None:
+            files = metadata.decode_files_sidedata(sd)
+    if files is not None:
         for f in sorted(files.touched):
             if f in files.added:
                 action = b"added"