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

[PATCH v6 0/3] Warn about git-filter-branch usage and avoid it

From
Elijah Newren <newren@gmail.com>
Date
Sep 4, 2019, 22:32 UTC
Message-ID
<20190904223239.571-1-newren@gmail.com>
In-Reply-To
<20190903185524.13467-1-newren@gmail.com>
Changes since v5 (full range-diff below):
  * Dropped patch 3 (which was rebased on top of js/rebase-r-strategy and
    submitted separately)[1]
  * Updated t6006 to include both an empty commit message and a commit
    message with just a line feed
  * Made the two small tweaks Junio suggested to git-filter-branch.sh
[1] https://public-inbox.org/git/20190904214048.29331-1-newren@gmail.com/
Elijah Newren (3):
  t6006: simplify, fix, and optimize empty message test
  Recommend git-filter-repo instead of git-filter-branch
  t9902: use a non-deprecated command for testing
 Documentation/git-fast-export.txt   |   6 +-
 Documentation/git-filter-branch.txt | 273 +++++++++++++++++++++++++---
 Documentation/git-gc.txt            |  17 +-
 Documentation/git-rebase.txt        |   3 +-
 Documentation/git-replace.txt       |  10 +-
 Documentation/git-svn.txt           |  10 +-
 Documentation/githooks.txt          |  10 +-
 contrib/svn-fe/svn-fe.txt           |   4 +-
 git-filter-branch.sh                |  14 ++
 t/t6006-rev-list-format.sh          |   5 +-
 t/t9902-completion.sh               |  12 +-
 11 files changed, 296 insertions(+), 68 deletions(-)
Range-diff:
1:  ccea0e5846 ! 1:  d5370568a4 t6006: simplify and optimize empty message test
    @@ Metadata
     Author: Elijah Newren <newren@gmail.com>
     
      ## Commit message ##
    -    t6006: simplify and optimize empty message test
    +    t6006: simplify, fix, and optimize empty message test
     
         Test t6006.71 ("oneline with empty message") was creating two commits
         with simple commit messages, and then running filter-branch to rewrite
    -    the commit messages to be empty.  This test was written this way because
    -    the --allow-empty-message option to git commit did not exist at the
    -    time.  Simplify this test and avoid the need to invoke filter-branch by
    -    just using --allow-empty-message when creating the commit.
    +    the commit messages to be "empty".  This test was introduced in commit
    +    1fb5fdd25f0 ("rev-list: fix --pretty=oneline with empty message",
    +    2010-03-21) and written this way because the --allow-empty-message
    +    option to git commit did not exist at the time.
    +
    +    However, the filter-branch invocation used differed slightly from
    +    --allow-empty-message in that it would have a commit message consisting
    +    solely of a single newline, and as such was not testing what the
    +    original commit intended to test.  Since both a truly empty commit
    +    message and a commit message with a single linefeed could trigger the
    +    original bug, modify the test slightly to include an example of each.
     
         Despite only being one piece of the 71st test and there being 73 tests
         overall, this small change to just this one test speeds up the overall
    @@ t/t6006-rev-list-format.sh: test_expect_success 'reflog identity' '
     -	git commit -m "dummy" --allow-empty &&
     -	git commit -m "dummy" --allow-empty &&
     -	git filter-branch --msg-filter "sed -e s/dummy//" HEAD^^.. &&
    -+	git commit --allow-empty --allow-empty-message &&
    ++	git commit --allow-empty --cleanup=verbatim -m "$LF" &&
     +	git commit --allow-empty --allow-empty-message &&
      	git rev-list --oneline HEAD >test.txt &&
      	test_line_count = 5 test.txt &&
2:  6d73135006 < -:  ---------- t3427: accelerate this test by using fast-export and fast-import
3:  2f225c8697 ! 2:  8635410b88 Recommend git-filter-repo instead of git-filter-branch
    @@ git-filter-branch.sh: set_ident () {
      	finish_ident COMMITTER
      }
      
    -+if [ -z "$FILTER_BRANCH_SQUELCH_WARNING" -a \
    -+     -z "$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS" ]; then
    ++if test -z "$FILTER_BRANCH_SQUELCH_WARNING$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS"
    ++then
     +	cat <<EOF
     +WARNING: git-filter-branch has a glut of gotchas generating mangled history
    -+         rewrites.  Please 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.
    -+
    ++	 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.
     +EOF
    -+	sleep 5
    ++	sleep 10
    ++	printf "Proceeding with filter-branch...\n\n"
     +fi
     +
      USAGE="[--setup <command>] [--subdirectory-filter <directory>] [--env-filter <command>]
4:  048eba375b = 3:  19edb94ec2 t9902: use a non-deprecated command for testing
-- 
2.23.0.3.g19edb94ec2
Previous: Elijah NewrenNext: Elijah Newren
Message 63 of 73 in “RFC: Proposing git-filter-repo for inclusion in git.git”
  1. Elijah NewrenAug 22, 2019
  2. Junio C HamanoAug 22, 2019
  3. Elijah NewrenAug 22, 2019
  4. Junio C HamanoAug 22, 2019
  5. 0/5 Remove git-filter-branch from git.git; host it elsewhereElijah Newren, Aug 26, 2019
  6. 1/5 t6006: simplify and optimize empty message testElijah Newren, Aug 26, 2019
  7. Derrick StoleeAug 27, 2019
  8. 2/5 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Aug 26, 2019
  9. Derrick StoleeAug 27, 2019
  10. 3/5 git-sh-i18n: work with external scriptsElijah Newren, Aug 26, 2019
  11. Derrick StoleeAug 27, 2019
  12. 4/5 Recommend git-filter-repo instead of git-filter-branch in documentationElijah Newren, Aug 26, 2019
  13. Derrick StoleeAug 27, 2019
  14. Elijah NewrenAug 27, 2019
  15. 5/5 Remove git-filter-branch, it is now external to git.gitElijah Newren, Aug 26, 2019
  16. Derrick StoleeAug 27, 2019
  17. Elijah NewrenAug 27, 2019
  18. Eric WongAug 27, 2019
  19. Sergey OrganovAug 27, 2019
  20. Elijah NewrenAug 27, 2019
  21. Sergey OrganovAug 28, 2019
  22. Elijah NewrenAug 28, 2019
  23. Sergey OrganovAug 28, 2019
  24. Johannes SchindelinAug 30, 2019
  25. Elijah NewrenAug 30, 2019
  26. Johannes SchindelinSep 2, 2019
  27. Elijah NewrenSep 3, 2019
  28. 0/4 Warn about git-filter-branch usage and avoid itElijah Newren, Aug 28, 2019
  29. 1/4 t6006: simplify and optimize empty message testElijah Newren, Aug 28, 2019
  30. 2/4 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Aug 28, 2019
  31. Eric SunshineAug 28, 2019
  32. 3/4 Recommend git-filter-repo instead of git-filter-branchElijah Newren, Aug 28, 2019
  33. Eric SunshineAug 28, 2019
  34. Elijah NewrenAug 28, 2019
  35. 4/4 Remove git-filter-branch, it is now external to git.gitElijah Newren, Aug 28, 2019
  36. 0/4 Warn about git-filter-branch usage and avoid itElijah Newren, Aug 29, 2019
  37. 1/4 t6006: simplify and optimize empty message testElijah Newren, Aug 29, 2019
  38. 2/4 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Aug 29, 2019
  39. 4/4 t9902: use a non-deprecated command for testingElijah Newren, Aug 29, 2019
  40. 3/4 Recommend git-filter-repo instead of git-filter-branchElijah Newren, Aug 29, 2019
  41. Eric SunshineAug 29, 2019
  42. Elijah NewrenAug 30, 2019
  43. 0/4 Warn about git-filter-branch usage and avoid itElijah Newren, Aug 30, 2019
  44. 1/4 t6006: simplify and optimize empty message testElijah Newren, Aug 30, 2019
  45. Johannes SchindelinSep 2, 2019
  46. 2/4 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Aug 30, 2019
  47. Johannes SchindelinSep 2, 2019
  48. 4/4 t9902: use a non-deprecated command for testingElijah Newren, Aug 30, 2019
  49. 3/4 Recommend git-filter-repo instead of git-filter-branchElijah Newren, Aug 30, 2019
  50. 0/4 Warn about git-filter-branch usage and avoid itElijah Newren, Sep 3, 2019
  51. 2/4 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Sep 3, 2019
  52. Junio C HamanoSep 3, 2019
  53. Junio C HamanoSep 3, 2019
  54. Elijah NewrenSep 4, 2019
  55. 1/4 t6006: simplify and optimize empty message testElijah Newren, Sep 3, 2019
  56. Junio C HamanoSep 3, 2019
  57. Elijah NewrenSep 3, 2019
  58. Junio C HamanoSep 3, 2019
  59. 3/4 Recommend git-filter-repo instead of git-filter-branchElijah Newren, Sep 3, 2019
  60. Junio C HamanoSep 3, 2019
  61. Elijah NewrenSep 4, 2019
  62. 4/4 t9902: use a non-deprecated command for testingElijah Newren, Sep 3, 2019
  63. 0/3 Warn about git-filter-branch usage and avoid itElijah Newren, Sep 4, 2019
  64. 1/3 t6006: simplify, fix, and optimize empty message testElijah Newren, Sep 4, 2019
  65. 2/3 Recommend git-filter-repo instead of git-filter-branchElijah Newren, Sep 4, 2019
  66. 3/3 t9902: use a non-deprecated command for testingElijah Newren, Sep 4, 2019
  67. Eric WongAug 23, 2019
  68. Elijah NewrenAug 23, 2019
  69. Elijah NewrenAug 23, 2019
  70. Johannes SchindelinAug 28, 2019
  71. Junio C HamanoAug 28, 2019
  72. Derrick StoleeAug 23, 2019
  73. Jeff KingAug 26, 2019

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.