[PATCH] add configuration variable for --autosquash option of interactive rebase
From: Heiko Voigt <hidden>
Date: 2016-06-15 22:49:06
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
If you use this feature regularly you can now enable it by default. Signed-off-by: Heiko Voigt <redacted> --- Documentation/git-rebase.txt | 3 +++ git-rebase--interactive.sh | 1 + t/t3415-rebase-autosquash.sh | 38 ++++++++++++++++++++++++++++++-------- 3 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index be23ad2..8849758 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt@@ -199,6 +199,9 @@ rebase.stat:: Whether to show a diffstat of what changed upstream since the last rebase. False by default. +rebase.autosquash:: + If set to true enable --autosquash option by default. + OPTIONS ------- <newbase>::
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 6b86abc..54dc983 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh@@ -111,6 +111,7 @@ VERBOSE= OK_TO_SKIP_PRE_REBASE= REBASE_ROOT= AUTOSQUASH= +test "$(git config --bool rebase.autosquash)" == "true" && AUTOSQUASH=t NEVER_FF= GIT_CHERRY_PICK_HELP=" After resolving the conflicts,
diff --git a/t/t3415-rebase-autosquash.sh b/t/t3415-rebase-autosquash.sh
index b63f4e2..ccc5e44 100755
--- a/t/t3415-rebase-autosquash.sh
+++ b/t/t3415-rebase-autosquash.sh@@ -21,38 +21,60 @@ test_expect_success setup ' git tag base ' -test_expect_success 'auto fixup' ' +test_auto_fixup() { git reset --hard base && echo 1 >file1 && git add -u && test_tick && git commit -m "fixup! first" - git tag final-fixup && + git tag $1 && test_tick && - git rebase --autosquash -i HEAD^^^ && + git rebase $2 -i HEAD^^^ && git log --oneline >actual && test 3 = $(wc -l <actual) && - git diff --exit-code final-fixup && + git diff --exit-code $1 && test 1 = "$(git cat-file blob HEAD^:file1)" && test 1 = $(git cat-file commit HEAD^ | grep first | wc -l) +} + +test_expect_success 'auto fixup (option)' ' + test_auto_fixup final-fixup-option --autosquash +' + +test_expect_success 'auto fixup (config)' ' + git config rebase.autosquash true && + test_auto_fixup final-fixup-config-true + git config rebase.autosquash false && + test_must_fail test_auto_fixup final-fixup-config-false ' -test_expect_success 'auto squash' ' +test_auto_squash() { git reset --hard base && echo 1 >file1 && git add -u && test_tick && git commit -m "squash! first" - git tag final-squash && + git tag $1 && test_tick && - git rebase --autosquash -i HEAD^^^ && + git rebase $2 -i HEAD^^^ && git log --oneline >actual && test 3 = $(wc -l <actual) && - git diff --exit-code final-squash && + git diff --exit-code $1 && test 1 = "$(git cat-file blob HEAD^:file1)" && test 2 = $(git cat-file commit HEAD^ | grep first | wc -l) +} + +test_expect_success 'auto squash (option)' ' + test_auto_squash final-squash --autosquash +' + +test_expect_success 'auto squash (config)' ' + git config rebase.autosquash true && + test_auto_squash final-squash-config-true + git config rebase.autosquash false && + test_must_fail test_auto_squash final-squash-config-false ' test_expect_success 'misspelled auto squash' '
--
1.7.2.rc2.1.geb6d9