Message ID | pull.912.git.git.1623785914202.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add config variable besides env variable to squelch "do-not-use" warning. | expand |
"Daniel Höpfl via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: =?UTF-8?q?Daniel=20H=C3=B6pfl?= <daniel@hoepfl.de> > > 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. > Signed-off-by: Daniel Höpfl <daniel@hoepfl.de> > --- > 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(-) > > diff --git a/git-filter-branch.sh b/git-filter-branch.sh > index fea796461721..d33db14a2a84 100755 > --- a/git-filter-branch.sh > +++ b/git-filter-branch.sh > @@ -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
On Tue, Jun 15, 2021 at 9:23 PM Junio C Hamano <gitster@pobox.com> wrote: > > "Daniel Höpfl via GitGitGadget" <gitgitgadget@gmail.com> writes: > > > From: =?UTF-8?q?Daniel=20H=C3=B6pfl?= <daniel@hoepfl.de> > > > > 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. 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.
diff --git a/git-filter-branch.sh b/git-filter-branch.sh index fea796461721..d33db14a2a84 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -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"