format: add pattern filtering to debugformat
The number of format to consider increase, this will make the command simpler to
use in tests and debug.
See test changes for some direct benefits.
--- a/mercurial/debugcommands.py Tue Dec 10 10:02:58 2024 +0000
+++ b/mercurial/debugcommands.py Mon Nov 18 17:25:30 2024 +0100
@@ -1625,12 +1625,20 @@
)
-@command(b'debugformat', [] + cmdutil.formatteropts)
-def debugformat(ui, repo, **opts):
+@command(
+ b'debugformat',
+ [] + cmdutil.formatteropts,
+ b'[PATTERN] ... [PATTERN]',
+)
+def debugformat(ui, repo, *patterns, **opts):
"""display format information about the current repository
Use --verbose to get extra information about current config value and
- Mercurial default."""
+ Mercurial default.
+
+ If patterns are specified, only format matching at least one of these
+ pattern will be displayed.
+ """
maxvariantlength = max(len(fv.name) for fv in upgrade.allformatvariant)
maxvariantlength = max(len(b'format-variant'), maxvariantlength)
@@ -1658,6 +1666,14 @@
fm.plain(b' config default')
fm.plain(b'\n')
for fv in upgrade.allformatvariant:
+ if patterns:
+ for p in patterns:
+ # XXX support "re:" at some point
+ if p in fv.name:
+ break
+ else:
+ # no pattern matches, continue
+ continue
fm.startitem()
repovalue = fv.fromrepo(repo)
configvalue = fv.fromconfig(repo)
--- a/tests/test-copies-chain-merge.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-copies-chain-merge.t Mon Nov 18 17:25:30 2024 +0100
@@ -1649,7 +1649,8 @@
> [format]
> exp-use-copies-side-data-changeset = yes
> EOF
- $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc'
+ $ hg debugformat -v changelog-v2 revlog-v2 copies-sdc
+ format-variant repo config default
copies-sdc: no yes no
revlog-v2: no no no
changelog-v2: no yes no
@@ -1675,7 +1676,8 @@
> enabled=yes
> numcpus=8
> EOF
- $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc'
+ $ hg debugformat -v changelog-v2 revlog-v2 copies-sdc
+ format-variant repo config default
copies-sdc: no yes no
revlog-v2: no no no
changelog-v2: no yes no
--- a/tests/test-copies-in-changeset.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-copies-in-changeset.t Mon Nov 18 17:25:30 2024 +0100
@@ -32,13 +32,13 @@
$ hg init repo
$ cd repo
#if sidedata
- $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+ $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
format-variant repo config default
copies-sdc: yes yes no
revlog-v2: no no no
changelog-v2: yes yes no
#else
- $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+ $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
format-variant repo config default
copies-sdc: no no no
revlog-v2: no no no
@@ -419,7 +419,7 @@
downgrading
- $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+ $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
format-variant repo config default
copies-sdc: yes yes no
revlog-v2: no no no
@@ -445,7 +445,7 @@
processed revlogs:
- changelog
- $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+ $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
format-variant repo config default
copies-sdc: no no no
revlog-v2: no no no
@@ -470,7 +470,7 @@
processed revlogs:
- changelog
- $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2'
+ $ hg debugformat -v format-variant revlog-v2 copies-sdc changelog-v2
format-variant repo config default
copies-sdc: yes yes no
revlog-v2: no no no
--- a/tests/test-persistent-nodemap.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-persistent-nodemap.t Mon Nov 18 17:25:30 2024 +0100
@@ -615,10 +615,12 @@
$ hg share race-repo ./other-wc --config format.use-share-safe=yes
updating working directory
5001 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg debugformat -R ./race-repo | grep -E 'share-safe|persistent-nodemap'
+ $ hg debugformat -R ./race-repo share-safe persistent-nodemap
+ format-variant repo
share-safe: yes
persistent-nodemap: yes
- $ hg debugformat -R ./other-wc/ | grep -E 'share-safe|persistent-nodemap'
+ $ hg debugformat -R ./other-wc/ share-safe persistent-nodemap
+ format-variant repo
share-safe: yes
persistent-nodemap: yes
$ hg -R ./other-wc update 'min(head())'
--- a/tests/test-pullling-to-general-delta.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-pullling-to-general-delta.t Mon Nov 18 17:25:30 2024 +0100
@@ -19,7 +19,8 @@
$ hg init server
$ hg clone --quiet --pull server client --config format.usegeneraldelta=no
- $ hg debugformat -R client | grep generaldelta
+ $ hg debugformat -R client generaldelta
+ format-variant repo
generaldelta: no
Create some complexe history
--- a/tests/test-revlog-delta-find.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-revlog-delta-find.t Mon Nov 18 17:25:30 2024 +0100
@@ -334,7 +334,8 @@
> --config format.usegeneraldelta=no \
> --config format.sparse-revlog=no \
> local-forced-full-p1-no-gd
- $ hg debugformat -R local-forced-full-p1-no-gd | grep generaldelta
+ $ hg debugformat -R local-forced-full-p1-no-gd generaldelta
+ format-variant repo
generaldelta: no
$ hg -R local-forced-full-p1-no-gd pull --quiet local-pre-pull-full \
> --config debug.revlog.debug-delta=no
--- a/tests/test-share-safe.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-share-safe.t Mon Nov 18 17:25:30 2024 +0100
@@ -631,7 +631,8 @@
$ hg debugbuilddag -R auto-upgrade --new-file .+5
$ hg -R auto-upgrade update
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg debugformat -R auto-upgrade | grep share-safe
+ $ hg debugformat -R auto-upgrade share-safe
+ format-variant repo
share-safe: no
upgrade it to share-safe automatically
@@ -641,7 +642,8 @@
> --config format.use-share-safe=yes
automatically upgrading repository to the `share-safe` feature
(see `hg help config.format.use-share-safe` for details)
- $ hg debugformat -R auto-upgrade | grep share-safe
+ $ hg debugformat -R auto-upgrade share-safe
+ format-variant repo
share-safe: yes
downgrade it from share-safe automatically
@@ -651,5 +653,6 @@
> --config format.use-share-safe=no
automatically downgrading repository from the `share-safe` feature
(see `hg help config.format.use-share-safe` for details)
- $ hg debugformat -R auto-upgrade | grep share-safe
+ $ hg debugformat -R auto-upgrade share-safe
+ format-variant repo
share-safe: no
--- a/tests/test-share.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-share.t Mon Nov 18 17:25:30 2024 +0100
@@ -295,11 +295,13 @@
#endif
$ hg init repo-safe-d1 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=no
- $ hg debugformat -R repo-safe-d1 | grep dirstate-v2
+ $ hg debugformat -R repo-safe-d1 dirstate-v2
+ format-variant repo
dirstate-v2: no
$ hg share repo-safe-d1 share-safe-d2 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=yes
updating working directory
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg debugformat -R share-safe-d2 | grep dirstate-v2
+ $ hg debugformat -R share-safe-d2 dirstate-v2
+ format-variant repo
dirstate-v2: yes
--- a/tests/test-sidedata.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-sidedata.t Mon Nov 18 17:25:30 2024 +0100
@@ -61,10 +61,12 @@
-------------------------------------
$ hg init up-no-side-data --config experimental.revlogv2=no
- $ hg debugformat -v -R up-no-side-data | grep -E 'changelog-v2|revlog-v2'
+ $ hg debugformat -v -R up-no-side-data changelog-v2 revlog-v2
+ format-variant repo config default
revlog-v2: no no no
changelog-v2: no no no
- $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | grep -E 'changelog-v2|revlog-v2'
+ $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data changelog-v2 revlog-v2
+ format-variant repo config default
revlog-v2: no yes no
changelog-v2: no no no
$ hg debugupgraderepo -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data > /dev/null
@@ -73,10 +75,12 @@
-----------------------------------------
$ hg init up-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data
- $ hg debugformat -v -R up-side-data | grep -E 'changelog-v2|revlog-v2'
+ $ hg debugformat -v -R up-side-data changelog-v2 revlog-v2
+ format-variant repo config default
revlog-v2: yes no no
changelog-v2: no no no
- $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | grep -E 'changelog-v2|revlog-v2'
+ $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no changelog-v2 revlog-v2
+ format-variant repo config default
revlog-v2: yes no no
changelog-v2: no no no
$ hg debugupgraderepo -R up-side-data --config experimental.revlogv2=no > /dev/null
--- a/tests/test-status-tracked-key.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-status-tracked-key.t Mon Nov 18 17:25:30 2024 +0100
@@ -211,7 +211,8 @@
$ hg debugbuilddag -R auto-upgrade --new-file .+5
$ hg -R auto-upgrade update
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg debugformat -R auto-upgrade | grep tracked
+ $ hg debugformat -R auto-upgrade tracked-hint
+ format-variant repo
tracked-hint: no
upgrade it to dirstate-tracked-hint automatically
@@ -221,7 +222,8 @@
> --config format.use-dirstate-tracked-hint=yes
automatically upgrading repository to the `tracked-hint` feature
(see `hg help config.format.use-dirstate-tracked-hint` for details)
- $ hg debugformat -R auto-upgrade | grep tracked
+ $ hg debugformat -R auto-upgrade tracked-hint
+ format-variant repo
tracked-hint: yes
rhg supports this feature
@@ -236,5 +238,6 @@
> --config format.use-dirstate-tracked-hint=no
automatically downgrading repository from the `tracked-hint` feature
(see `hg help config.format.use-dirstate-tracked-hint` for details)
- $ hg debugformat -R auto-upgrade | grep tracked
+ $ hg debugformat -R auto-upgrade tracked
+ format-variant repo
tracked-hint: no
--- a/tests/test-upgrade-repo.t Tue Dec 10 10:02:58 2024 +0000
+++ b/tests/test-upgrade-repo.t Mon Nov 18 17:25:30 2024 +0100
@@ -61,9 +61,11 @@
no revlogs to process
- $ hg debugformat -R share-child | grep dirstate-v2
+ $ hg debugformat -R share-child dirstate-v2
+ format-variant repo
dirstate-v2: yes
- $ hg debugformat -R share-parent | grep dirstate-v2
+ $ hg debugformat -R share-parent dirstate-v2
+ format-variant repo
dirstate-v2: no
$ hg status --all -R share-child
C nf0
@@ -131,9 +133,11 @@
no revlogs to process
- $ hg debugformat -R share-child | grep dirstate-v2
+ $ hg debugformat -R share-child dirstate-v2
+ format-variant repo
dirstate-v2: no
- $ hg debugformat -R share-parent | grep dirstate-v2
+ $ hg debugformat -R share-parent dirstate-v2
+ format-variant repo
dirstate-v2: no
$ hg status --all -R share-child
C nf0
@@ -1869,7 +1873,8 @@
Upgrade to dirstate-v2
- $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2
+ $ hg debugformat -v --config format.use-dirstate-v2=1 dirstate-v2
+ format-variant repo config default
dirstate-v2: no yes no
$ hg debugupgraderepo --config format.use-dirstate-v2=1 --run
upgrade will perform the following actions:
@@ -1892,7 +1897,8 @@
removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
$ ls .hg/upgradebackup.*/dirstate
.hg/upgradebackup.*/dirstate (glob)
- $ hg debugformat -v | grep dirstate-v2
+ $ hg debugformat -v dirstate-v2
+ format-variant repo config default
dirstate-v2: yes no no
$ hg status
$ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null
@@ -1916,7 +1922,8 @@
downgrading from dirstate-v2 to v1
replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
- $ hg debugformat -v | grep dirstate-v2
+ $ hg debugformat -v dirstate-v2
+ format-variant repo config default
dirstate-v2: no no no
$ hg status
@@ -1927,7 +1934,8 @@
$ hg init --config format.use-dirstate-v2=no dirstate-v2-empty
$ cd dirstate-v2-empty
- $ hg debugformat | grep dirstate-v2
+ $ hg debugformat dirstate-v2
+ format-variant repo
dirstate-v2: no
upgrade
@@ -1951,7 +1959,8 @@
upgrading to dirstate-v2 from v1
replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
- $ hg debugformat | grep dirstate-v2
+ $ hg debugformat dirstate-v2
+ format-variant repo
dirstate-v2: yes
downgrade
@@ -1972,7 +1981,8 @@
downgrading from dirstate-v2 to v1
replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
- $ hg debugformat | grep dirstate-v2
+ $ hg debugformat dirstate-v2
+ format-variant repo
dirstate-v2: no
$ cd ..
@@ -1993,7 +2003,8 @@
$ hg debugbuilddag -R auto-upgrade --new-file .+5
$ hg -R auto-upgrade update
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg debugformat -R auto-upgrade | grep dirstate-v2
+ $ hg debugformat -R auto-upgrade dirstate-v2
+ format-variant repo
dirstate-v2: no
upgrade it to dirstate-v2 automatically
@@ -2003,7 +2014,8 @@
> --config format.use-dirstate-v2=yes
automatically upgrading repository to the `dirstate-v2` feature
(see `hg help config.format.use-dirstate-v2` for details)
- $ hg debugformat -R auto-upgrade | grep dirstate-v2
+ $ hg debugformat -R auto-upgrade dirstate-v2
+ format-variant repo
dirstate-v2: yes
downgrade it from dirstate-v2 automatically
@@ -2013,14 +2025,16 @@
> --config format.use-dirstate-v2=no
automatically downgrading repository from the `dirstate-v2` feature
(see `hg help config.format.use-dirstate-v2` for details)
- $ hg debugformat -R auto-upgrade | grep dirstate-v2
+ $ hg debugformat -R auto-upgrade dirstate-v2
+ format-variant repo
dirstate-v2: no
For multiple change at the same time
------------------------------------
- $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+ $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+ format-variant repo
dirstate-v2: no
tracked-hint: yes
share-safe: no
@@ -2038,7 +2052,8 @@
(see `hg help config.format.use-share-safe` for details)
automatically downgrading repository from the `tracked-hint` feature
(see `hg help config.format.use-dirstate-tracked-hint` for details)
- $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+ $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+ format-variant repo
dirstate-v2: yes
tracked-hint: no
share-safe: yes
@@ -2047,7 +2062,8 @@
---------------------------
- $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+ $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+ format-variant repo
dirstate-v2: yes
tracked-hint: no
share-safe: yes
@@ -2062,7 +2078,8 @@
> --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
> --config format.use-share-safe=no
- $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+ $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+ format-variant repo
dirstate-v2: no
tracked-hint: yes
share-safe: no
@@ -2077,7 +2094,8 @@
> --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
> --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
> --config format.use-share-safe=yes
- $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)'
+ $ hg debugformat -R auto-upgrade dirstate-v2 tracked share-safe
+ format-variant repo
dirstate-v2: yes
tracked-hint: no
share-safe: yes
@@ -2092,7 +2110,8 @@
$ hg status -R auto-upgrade \
> --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
> --config format.use-dirstate-v2=no
- $ hg debugformat -R auto-upgrade | grep dirstate-v2
+ $ hg debugformat -R auto-upgrade dirstate-v2
+ format-variant repo
dirstate-v2: yes
$ chmod -R u+w auto-upgrade
@@ -2107,7 +2126,8 @@
$ hg status -R auto-upgrade \
> --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
> --config format.use-dirstate-v2=no
- $ hg debugformat -R auto-upgrade | grep dirstate-v2
+ $ hg debugformat -R auto-upgrade dirstate-v2
+ format-variant repo
dirstate-v2: yes
$ killdaemons.py