D9946: copy-tracing: add a --compute flag to debugchangedfiles
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Feb 2 11:08:52 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This will help analysis of possible misbehaving cases.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D9946
AFFECTED FILES
mercurial/debugcommands.py
tests/test-completion.t
tests/test-copies-chain-merge.t
CHANGE DETAILS
diff --git a/tests/test-copies-chain-merge.t b/tests/test-copies-chain-merge.t
--- a/tests/test-copies-chain-merge.t
+++ b/tests/test-copies-chain-merge.t
@@ -721,6 +721,11 @@
#if no-compatibility no-filelog no-changeset
+ $ hg debugchangedfiles --compute 0
+ added : a, ;
+ added : b, ;
+ added : h, ;
+
$ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do
> echo "##### revision $rev #####"
> hg debugsidedata -c -v -- $rev
diff --git a/tests/test-completion.t b/tests/test-completion.t
--- a/tests/test-completion.t
+++ b/tests/test-completion.t
@@ -272,7 +272,7 @@
debugbuilddag: mergeable-file, overwritten-file, new-file
debugbundle: all, part-type, spec
debugcapabilities:
- debugchangedfiles:
+ debugchangedfiles: compute
debugcheckstate:
debugcolor: style
debugcommands:
diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
--- a/mercurial/debugcommands.py
+++ b/mercurial/debugcommands.py
@@ -483,14 +483,31 @@
ui.write(b' %s\n' % v)
- at command(b'debugchangedfiles', [], b'REV')
-def debugchangedfiles(ui, repo, rev):
+ at 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"
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list