Browse Source

Merge branch 'jk/rebase-i-drop-ident-check'

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
maint
Junio C Hamano 9 years ago
parent
commit
ae1ae600db
  1. 3
      git-rebase--interactive.sh
  2. 47
      t/t7517-per-repo-email.sh

3
git-rebase--interactive.sh

@ -1141,9 +1141,6 @@ To continue rebase after editing, run:
;; ;;
esac esac


git var GIT_COMMITTER_IDENT >/dev/null ||
die "$(gettext "You need to set your committer info first")"

comment_for_reflog start comment_for_reflog start


if test ! -z "$switch_to" if test ! -z "$switch_to"

47
t/t7517-per-repo-email.sh

@ -36,4 +36,51 @@ test_expect_success 'succeeds cloning if global email is not set' '
git clone . clone 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 test_done

Loading…
Cancel
Save