git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Suppressing filter-branch warning

From
DHDaniel Höpfl <daniel@hoepfl.de>
Date
Nov 10, 2020, 11:21 UTC
Message-ID
<20201110112114.GA28702@black.spass-am-geraet.de>
In-Reply-To
<CABPp-BGv9goqrYBwgSkmhPYOmwcXeRCzGT2sQbL+xD2xWeT5gQ@mail.gmail.com>
Hallo Elijah,
On Fri, Nov 06, 2020 at 12:12:55PM -0800, Elijah Newren wrote:
Show 65 quoted lines
>On Fri, Nov 6, 2020 at 10:06 AM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> Daniel Höpfl <daniel@hoepfl.de> writes:
>>
>> > Hello there,
>> >
>> > What did you do before the bug happened? (Steps to reproduce your issue)
>> > git filter-branch -f --env-filter '' --tag-name-filter cat -- HEAD
>> >
>> > What did you expect to happen? (Expected behavior)
>> > See below (difference).
>> >
>> > What happened instead? (Actual behavior)
>> > When using git filter-branch, the following message is shown:
>> >
>> > ----------8<-----------------------------------------------------
>> > WARNING: git-filter-branch has a glut of gotchas generating mangled history
>> >         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
>> >         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.
>> > ----------8<-----------------------------------------------------
>> >
>> > You can suppress this by setting the environment variable shown.
>> >
>> > What's different between what you expected and what actually happened?
>> >
>> > Normally, when git introduces this kind of change, there is a
>> > git config variable that one can set to suppress it.
>> > That way one has fine grade control when to suppress it (one repo only...globally).
>>
>> I think this comes from 9df53c5d (Recommend git-filter-repo instead
>> of git-filter-branch, 2019-09-04).
>>
>> FWIW, I personally do not think an environment is a worse choice
>> over configuration variable in this particular case.  The large
>> scale rewriting of the entire history in the repository by its
>> nature is an one-off operation that ought to happen only rarely,
>> so a one-shot
>>
>>         $ FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch ...
>>
>> that reminds the user every time would be more appropriate than a
>> configuration variable that has a more permanent squelching effect.
>>
>> If it were a new command line option may have been even better, as
>> an environment variable can be defined in .*rc and forgotten, but a
>> command line option needs to be typed every time and would serve as
>> a better reminder (yes, I know it can also be aliased away, so it
>> may not make much practical difference either way).
>>
>> But I'll let the author of the feature to comment.
>>
>> Thanks.
>
>I agree with Junio that filter-branch's one-off nature means that not
>providing a configuration variable seems reasonable in this case.  If
>someone else were to go to the effort of implementing some
>configuration option here, I wouldn't be that strongly against it,
>though I'd rather just let filter-branch lie dormant and stable.
>
>A new command line option might have been better, but it didn't occur
>to me at the time this change was made and I hesitate to needlessly
>force people to adapt again.
I implemented the change and sent a pull request on github (#912) but failed at GitGitGadget. Anyways, here’s the patch:
---
 git-filter-branch.sh | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index fea7964617..fb55afcc86 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -83,15 +83,21 @@ 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
-        rewrites.  Hit Ctrl-C before proceeding to abort, then use an
+        rewrites. Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
-        (https://github.com/newren/git-filter-repo/) instead.  See the
+        (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"
--
2.29.0
Previous: Elijah NewrenNext: Johannes Schindelin
Message 4 of 5 in “Suppressing filter-branch warning”
  1. Daniel HöpflNov 6, 2020
  2. Junio C HamanoNov 6, 2020
  3. Elijah NewrenNov 6, 2020
  4. Daniel HöpflNov 10, 2020
  5. Johannes SchindelinNov 10, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.