# HG changeset patch # User Pierre-Yves David <pierre-yves.david@octobus.net> # Date 1731947130 -3600 # Mon Nov 18 17:25:30 2024 +0100 # Node ID 8dede0df9de97c003e13ee2e007a45678f5c8b6b # Parent 57a4adbef74d27108e0cdaa25d80cba58b312536 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. diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -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) 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 @@ -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 diff --git a/tests/test-copies-in-changeset.t b/tests/test-copies-in-changeset.t --- a/tests/test-copies-in-changeset.t +++ b/tests/test-copies-in-changeset.t @@ -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 diff --git a/tests/test-persistent-nodemap.t b/tests/test-persistent-nodemap.t --- a/tests/test-persistent-nodemap.t +++ b/tests/test-persistent-nodemap.t @@ -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())' diff --git a/tests/test-pullling-to-general-delta.t b/tests/test-pullling-to-general-delta.t --- a/tests/test-pullling-to-general-delta.t +++ b/tests/test-pullling-to-general-delta.t @@ -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 diff --git a/tests/test-revlog-delta-find.t b/tests/test-revlog-delta-find.t --- a/tests/test-revlog-delta-find.t +++ b/tests/test-revlog-delta-find.t @@ -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 diff --git a/tests/test-share-safe.t b/tests/test-share-safe.t --- a/tests/test-share-safe.t +++ b/tests/test-share-safe.t @@ -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 diff --git a/tests/test-share.t b/tests/test-share.t --- a/tests/test-share.t +++ b/tests/test-share.t @@ -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 diff --git a/tests/test-sidedata.t b/tests/test-sidedata.t --- a/tests/test-sidedata.t +++ b/tests/test-sidedata.t @@ -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 diff --git a/tests/test-status-tracked-key.t b/tests/test-status-tracked-key.t --- a/tests/test-status-tracked-key.t +++ b/tests/test-status-tracked-key.t @@ -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 diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t --- a/tests/test-upgrade-repo.t +++ b/tests/test-upgrade-repo.t @@ -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