Merge branch 'jk/rebase-i-drop-ident-check' into maint
authorJunio C Hamano <gitster@pobox.com>
Thu, 29 Sep 2016 23:49:41 +0000 (16:49 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 29 Sep 2016 23:49:41 +0000 (16:49 -0700)
Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.

* jk/rebase-i-drop-ident-check:
rebase-interactive: drop early check for valid ident

git-rebase--interactive.sh
t/t7517-per-repo-email.sh
index 6fd6d4e5f64bcab81fa64bf363db1b530a00a544..5e474e4a8584fc8ccfc7a638f9fb7a3e98f2c1e3 100644 (file)
@@ -1141,9 +1141,6 @@ To continue rebase after editing, run:
        ;;
 esac
 
-git var GIT_COMMITTER_IDENT >/dev/null ||
-       die "$(gettext "You need to set your committer info first")"
-
 comment_for_reflog start
 
 if test ! -z "$switch_to"
index 337e6e30c35fd6881eb20e9ec27ac81662c3a8e7..2a22fa7588d365c11b35cfdcee82dbef3f97ecaf 100755 (executable)
@@ -36,4 +36,51 @@ test_expect_success 'succeeds cloning if global email is not set' '
        git clone . clone
 '
 
+test_expect_success 'set up rebase scenarios' '
+       # temporarily enable an actual ident for this setup
+       test_config user.email foo@example.com &&
+       test_commit new &&
+       git branch side-without-commit HEAD^ &&
+       git checkout -b side-with-commit HEAD^ &&
+       test_commit side
+'
+
+test_expect_success 'fast-forward rebase does not care about ident' '
+       git checkout -B tmp side-without-commit &&
+       git rebase master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits' '
+       test_when_finished "git rebase --abort || true" &&
+       git checkout -B tmp side-with-commit &&
+       test_must_fail git rebase master
+'
+
+test_expect_success 'fast-forward rebase does not care about ident (interactive)' '
+       git checkout -B tmp side-without-commit &&
+       git rebase -i master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits (interactive)' '
+       test_when_finished "git rebase --abort || true" &&
+       git checkout -B tmp side-with-commit &&
+       test_must_fail git rebase -i master
+'
+
+test_expect_success 'noop interactive rebase does not care about ident' '
+       git checkout -B tmp side-with-commit &&
+       git rebase -i HEAD^
+'
+
+test_expect_success 'fast-forward rebase does not care about ident (preserve)' '
+       git checkout -B tmp side-without-commit &&
+       git rebase -p master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits (preserve)' '
+       test_when_finished "git rebase --abort || true" &&
+       git checkout -B tmp side-with-commit &&
+       test_must_fail git rebase -p master
+'
+
 test_done