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

[PATCH 03/12] t3427: move the `filter-branch` invocation into the `setup` case

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Jul 25, 2019, 10:11 UTC
Message-ID
<a3944c54802670d6a0cceba1921b67a1d01ff555.1564049473.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.294.git.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>

The step to prepare a pre-rebase commit history is _identical_ in _all_ of the test cases (except of course the `setup` case). It should therefore clearly a part of the `setup` test case instead.

As the `git filter-branch` command is quite costly on platforms where Unix shell scripting is simply slow (meaning: on Windows), this shaves off a noticeable part of the runtime: in this developer's setup, the time was reduced from ~1m25s to ~1m.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 t/t3427-rebase-subtree.sh | 38 +++++++++++++-------------------------
 1 file changed, 13 insertions(+), 25 deletions(-)
diff --git a/t/t3427-rebase-subtree.sh b/t/t3427-rebase-subtree.sh
index f41a08e436..c0e6a49b61 100755
--- a/t/t3427-rebase-subtree.sh
+++ b/t/t3427-rebase-subtree.sh
@@ -56,15 +56,17 @@ test_expect_success 'setup' '
 
 	: add two extra commits to rebase &&
 	test_commit -C files_subtree master4 &&
-	test_commit files_subtree/master5
+	test_commit files_subtree/master5 &&
+
+	git checkout -b to-rebase &&
+	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
+	git commit -m "Empty commit" --allow-empty
 '
 
 # FAILURE: Does not preserve master4.
 test_expect_failure 'Rebase -Xsubtree --preserve-merges --onto commit 4' '
 	reset_rebase &&
-	git checkout -b rebase-preserve-merges-4 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-preserve-merges-4 to-rebase &&
 	git rebase -Xsubtree=files_subtree --preserve-merges --onto files-master master &&
 	verbose test "$(commit_message HEAD~)" = "files_subtree/master4"
 '
@@ -72,9 +74,7 @@ test_expect_failure 'Rebase -Xsubtree --preserve-merges --onto commit 4' '
 # FAILURE: Does not preserve master5.
 test_expect_failure 'Rebase -Xsubtree --preserve-merges --onto commit 5' '
 	reset_rebase &&
-	git checkout -b rebase-preserve-merges-5 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-preserve-merges-5 to-rebase &&
 	git rebase -Xsubtree=files_subtree --preserve-merges --onto files-master master &&
 	verbose test "$(commit_message HEAD)" = "files_subtree/master5"
 '
@@ -82,9 +82,7 @@ test_expect_failure 'Rebase -Xsubtree --preserve-merges --onto commit 5' '
 # FAILURE: Does not preserve master4.
 test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto commit 4' '
 	reset_rebase &&
-	git checkout -b rebase-keep-empty-4 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-keep-empty-4 to-rebase &&
 	git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-master master &&
 	verbose test "$(commit_message HEAD~2)" = "files_subtree/master4"
 '
@@ -92,9 +90,7 @@ test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto comm
 # FAILURE: Does not preserve master5.
 test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto commit 5' '
 	reset_rebase &&
-	git checkout -b rebase-keep-empty-5 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-keep-empty-5 to-rebase &&
 	git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-master master &&
 	verbose test "$(commit_message HEAD~)" = "files_subtree/master5"
 '
@@ -102,9 +98,7 @@ test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto comm
 # FAILURE: Does not preserve Empty.
 test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto empty commit' '
 	reset_rebase &&
-	git checkout -b rebase-keep-empty-empty master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-keep-empty-empty to-rebase &&
 	git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-master master &&
 	verbose test "$(commit_message HEAD)" = "Empty commit"
 '
@@ -112,9 +106,7 @@ test_expect_failure 'Rebase -Xsubtree --keep-empty --preserve-merges --onto empt
 # FAILURE: fatal: Could not parse object
 test_expect_failure 'Rebase -Xsubtree --onto commit 4' '
 	reset_rebase &&
-	git checkout -b rebase-onto-4 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-onto-4 to-rebase &&
 	git rebase -Xsubtree=files_subtree --onto files-master master &&
 	verbose test "$(commit_message HEAD~2)" = "files_subtree/master4"
 '
@@ -122,18 +114,14 @@ test_expect_failure 'Rebase -Xsubtree --onto commit 4' '
 # FAILURE: fatal: Could not parse object
 test_expect_failure 'Rebase -Xsubtree --onto commit 5' '
 	reset_rebase &&
-	git checkout -b rebase-onto-5 master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-onto-5 to-rebase &&
 	git rebase -Xsubtree=files_subtree --onto files-master master &&
 	verbose test "$(commit_message HEAD~)" = "files_subtree/master5"
 '
 # FAILURE: fatal: Could not parse object
 test_expect_failure 'Rebase -Xsubtree --onto empty commit' '
 	reset_rebase &&
-	git checkout -b rebase-onto-empty master &&
-	git filter-branch --prune-empty -f --subdirectory-filter files_subtree &&
-	git commit -m "Empty commit" --allow-empty &&
+	git checkout -b rebase-onto-empty to-rebase &&
 	git rebase -Xsubtree=files_subtree --onto files-master master &&
 	verbose test "$(commit_message HEAD)" = "Empty commit"
 '
-- 
gitgitgadget
Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin via GitGitGadget
Message 7 of 39 in “rebase -r: support merge strategies other than recursive”
  1. 00/12 rebase -r: support merge strategies other than recursiveJohannes Schindelin via GitGitGadget, Jul 25, 2019
  2. 02/12 t3427: simplify the `setup` test case significantlyJohannes Schindelin via GitGitGadget, Jul 25, 2019
  3. 01/12 t3427: add a clarifying commentJohannes Schindelin via GitGitGadget, Jul 25, 2019
  4. 04/12 t3427: condense the unnecessarily repetitive test cases into threeJohannes Schindelin via GitGitGadget, Jul 25, 2019
  5. 05/12 t3427: fix erroneous assumptionJohannes Schindelin via GitGitGadget, Jul 25, 2019
  6. 07/12 t3427: fix another incorrect assumptionJohannes Schindelin via GitGitGadget, Jul 25, 2019
  7. 03/12 t3427: move the `filter-branch` invocation into the `setup` caseJohannes Schindelin via GitGitGadget, Jul 25, 2019
  8. 09/12 rebase -r: support merge strategies other than `recursive`Johannes Schindelin via GitGitGadget, Jul 25, 2019
  9. 10/12 t/lib-rebase: prepare for testing `git rebase --rebase-merges`Johannes Schindelin via GitGitGadget, Jul 25, 2019
  10. brian m. carlsonJul 26, 2019
  11. Johannes SchindelinJul 26, 2019
  12. brian m. carlsonJul 26, 2019
  13. Johannes SchindelinJul 31, 2019
  14. 12/12 rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`Johannes Schindelin via GitGitGadget, Jul 25, 2019
  15. 08/12 t3427: mark two test cases as requiring support for `git rebase -p`Johannes Schindelin via GitGitGadget, Jul 25, 2019
  16. 11/12 t3418: test `rebase -r` with merge strategiesJohannes Schindelin via GitGitGadget, Jul 25, 2019
  17. 06/12 t3427: accommodate for the `rebase --merge` backend having been replacedJohannes Schindelin via GitGitGadget, Jul 25, 2019
  18. Junio C HamanoJul 25, 2019
  19. brian m. carlsonJul 26, 2019
  20. 00/16 rebase -r: support merge strategies other than recursiveJohannes Schindelin via GitGitGadget, Jul 31, 2019
  21. 02/16 t3400: stop referring to the scripted rebaseJohannes Schindelin via GitGitGadget, Jul 31, 2019
  22. 03/16 .gitignore: there is no longer a built-in `git-rebase--interactive`Johannes Schindelin via GitGitGadget, Jul 31, 2019
  23. 06/16 t3427: add a clarifying commentJohannes Schindelin via GitGitGadget, Jul 31, 2019
  24. 04/16 sequencer: the `am` and `rebase--interactive` scripts are goneJohannes Schindelin via GitGitGadget, Jul 31, 2019
  25. 05/16 rebase: fold git-rebase--common into the -p backendJohannes Schindelin via GitGitGadget, Jul 31, 2019
  26. 08/16 t3427: move the `filter-branch` invocation into the `setup` caseJohannes Schindelin via GitGitGadget, Jul 31, 2019
  27. 01/16 Drop unused git-rebase--am.shJohannes Schindelin via GitGitGadget, Jul 31, 2019
  28. 16/16 rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`Johannes Schindelin via GitGitGadget, Jul 31, 2019
  29. 14/16 t/lib-rebase: prepare for testing `git rebase --rebase-merges`Johannes Schindelin via GitGitGadget, Jul 31, 2019
  30. 15/16 t3418: test `rebase -r` with merge strategiesJohannes Schindelin via GitGitGadget, Jul 31, 2019
  31. 13/16 rebase -r: support merge strategies other than `recursive`Johannes Schindelin via GitGitGadget, Jul 31, 2019
  32. 09/16 t3427: condense the unnecessarily repetitive test cases into threeJohannes Schindelin via GitGitGadget, Jul 31, 2019
  33. 12/16 t3427: fix another incorrect assumptionJohannes Schindelin via GitGitGadget, Jul 31, 2019
  34. 10/16 t3427: fix erroneous assumptionJohannes Schindelin via GitGitGadget, Jul 31, 2019
  35. 11/16 t3427: accommodate for the `rebase --merge` backend having been replacedJohannes Schindelin via GitGitGadget, Jul 31, 2019
  36. 07/16 t3427: simplify the `setup` test case significantlyJohannes Schindelin via GitGitGadget, Jul 31, 2019
  37. 17/16 t3427: accelerate this test by using fast-export and fast-importElijah Newren, Sep 4, 2019
  38. Johannes SchindelinSep 9, 2019
  39. Junio C HamanoSep 9, 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.