Skip to contentSkip to conversation

Add config variable besides env variable to squelch "do-not-use" warning.

PATCH In review Daniel Höpfl via GitGitGadget 3 participants 3 messages Jun 15, 2021 – Jun 16, 2021

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add config variable besides env variable to squelch "do-not-use" warning.

From: =?UTF-8?q?Daniel=20H=C3=B6pfl?= <[email protected]>

In addition to the environment variable FILTER_BRANCH_SQUELCH_WARNING, the git config filter-branch.squelchWarning is checked to see if the usage warning should be squelched.

---
Add filter-branch.squelchWarning git config alongside FILTER_BRANCH_SQUELCH_WARNING

In addition to the environment variable FILTER_BRANCH_SQUELCH_WARNING, the git config filter-branch.squelchWarning is checked to see if the usage warning should be squelched.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-912%2Fdhoepfl%2FFILTER_BRANCH_SQUELCH_WARNING-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-912/dhoepfl/FILTER_BRANCH_SQUELCH_WARNING-v1
Pull-Request: https://github.com/git/git/pull/912

 git-filter-branch.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
git-filter-branch.sh +8 -2
index fea796461721..d33db14a2a84 100755
@@ -83,7 +83,8 @@ set_ident () {
 	finish_ident COMMITTER
 }
 
-if test -z "$FILTER_BRANCH_SQUELCH_WARNING$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS"
+if test -z "$FILTER_BRANCH_SQUELCH_WARNING$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS" &&
+   test "$(git config --bool filter-branch.squelchWarning)" != true
 then
 	cat <<EOF
 WARNING: git-filter-branch has a glut of gotchas generating mangled history
@@ -91,7 +92,12 @@ WARNING: git-filter-branch has a glut of gotchas generating mangled history
 	 alternative filtering tool such as 'git filter-repo'
 	 (https://github.com/newren/git-filter-repo/) instead.  See the
 	 filter-branch manual page for more details; to squelch this warning,
-	 set FILTER_BRANCH_SQUELCH_WARNING=1.
+	 set FILTER_BRANCH_SQUELCH_WARNING=1 or run the following command:
+
+	    git config filter-branch.squelchWarning true
+
+	 You can replace "git config" with "git config --global" to disable
+	 the warning for all repositories.
 EOF
 	sleep 10
 	printf "Proceeding with filter-branch...\n\n"

base-commit: e4d83eee9239207622e2b1cc43967da5051c189c

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 5 lines · Daniel Höpfl via GitGitGadget

From: =?UTF-8?q?Daniel=20H=C3=B6pfl?= <[email protected]>

In addition to the environment variable FILTER_BRANCH_SQUELCH_WARNING, the git config filter-branch.squelchWarning is checked to see if the usage warning should be squelched.

Thanks for trying to improve the system.

A configuration variable that is used to squelch warning messages related to migration and transition typically lives under advice.* hierarchy, so something ike "advice.weanOffOfFilterBranch" may be a more appropriate name for this new knob.

Having said that.

As this message with environment as an escape hatch was added as a way to strongly discourage users from keep using the command, I am fairly negative to a change that adds yet another way to make it easier to keep using it.

Elijah, who did 9df53c5d (Recommend git-filter-repo instead of git-filter-branch, 2019-09-04), added to CC list for input.

Thanks.

Quoted 46 lines

---
Add filter-branch.squelchWarning git config alongside FILTER_BRANCH_SQUELCH_WARNING

In addition to the environment variable FILTER_BRANCH_SQUELCH_WARNING, the git config filter-branch.squelchWarning is checked to see if the usage warning should be squelched.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-912%2Fdhoepfl%2FFILTER_BRANCH_SQUELCH_WARNING-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-912/dhoepfl/FILTER_BRANCH_SQUELCH_WARNING-v1
Pull-Request: https://github.com/git/git/pull/912

 git-filter-branch.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
git-filter-branch.sh +8 -2
index fea796461721..d33db14a2a84 100755
@@ -83,7 +83,8 @@ set_ident () {
 	finish_ident COMMITTER
 }
 
-if test -z "$FILTER_BRANCH_SQUELCH_WARNING$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS"
+if test -z "$FILTER_BRANCH_SQUELCH_WARNING$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS" &&
+   test "$(git config --bool filter-branch.squelchWarning)" != true
 then
 	cat <<EOF
 WARNING: git-filter-branch has a glut of gotchas generating mangled history
@@ -91,7 +92,12 @@ WARNING: git-filter-branch has a glut of gotchas generating mangled history
 	 alternative filtering tool such as 'git filter-repo'
 	 (https://github.com/newren/git-filter-repo/) instead.  See the
 	 filter-branch manual page for more details; to squelch this warning,
-	 set FILTER_BRANCH_SQUELCH_WARNING=1.
+	 set FILTER_BRANCH_SQUELCH_WARNING=1 or run the following command:
+
+	    git config filter-branch.squelchWarning true
+
+	 You can replace "git config" with "git config --global" to disable
+	 the warning for all repositories.
 EOF
 	sleep 10
 	printf "Proceeding with filter-branch...\n\n"

base-commit: e4d83eee9239207622e2b1cc43967da5051c189c

#2 lore raw
Quoted 18 lines · Junio C Hamano
Quoted 5 lines · Daniel Höpfl via GitGitGadget

From: =?UTF-8?q?Daniel=20H=C3=B6pfl?= <[email protected]>

In addition to the environment variable FILTER_BRANCH_SQUELCH_WARNING, the git config filter-branch.squelchWarning is checked to see if the usage warning should be squelched.

Thanks for trying to improve the system.

A configuration variable that is used to squelch warning messages related to migration and transition typically lives under advice.* hierarchy, so something ike "advice.weanOffOfFilterBranch" may be a more appropriate name for this new knob.

Having said that.

Quoted 7 lines

As this message with environment as an escape hatch was added as a way to strongly discourage users from keep using the command, I am fairly negative to a change that adds yet another way to make it easier to keep using it.

Elijah, who did 9df53c5d (Recommend git-filter-repo instead of git-filter-branch, 2019-09-04), added to CC list for input.

Yeah, I generally would like to discourage it but...

Back when we put this strong discouragement and escape hatch in, I wasn't aware of anything that could be done in filter-branch that was hard to do in filter-repo. However, since then, a user reported they wanted to re-sign commits after a rewrite. Since fast-import does not (currently) provide a way to sign commits, and filter-repo is built on top of fast-export and fast-import, this makes it rather difficult for filter-repo to do. (I think it still can, given all the shenanigans I did to create filter-branch-ish as a rewrite of filter-branch on top of filter-repo, but that comes with nearly all the same caveats as filter-branch if used directly, and is a huge amount of code to lift to try to use outside of filter-branch-ish.)

Since there's a valid use for filter-branch (even if rare) that isn't readily done in filter-repo, adding the option Daniel requests makes sense.