diff options
author | Johannes Sixt <johannes.sixt@telecom.at> | 2007-09-01 09:25:27 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-09-01 02:23:05 -0700 |
commit | 7afa845edc09d2818af5fe67a0eb45ec579d1260 (patch) | |
tree | 6e132b3f4b3d33a5216ea86c3b1c67607de898a9 | |
parent | aecbf914c43ab76e055fa8a25b12456ae74d91bc (diff) | |
download | git-7afa845edc09d2818af5fe67a0eb45ec579d1260.tar.gz |
rebase -m: Fix incorrect short-logs of already applied commits.
When a topic branch is rebased, some of whose commits are already
cherry-picked upstream:
o--X--A--B--Y <- master
\
A--B--Z <- topic
then 'git rebase -m master' would report:
Already applied: 0001 Y
Already applied: 0002 Y
With this fix it reports the expected:
Already applied: 0001 A
Already applied: 0002 B
As an added bonus, this change also avoids 'echo' of a commit message,
which might contain escapements.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-rebase.sh | 13 | ||||
-rwxr-xr-x | t/t3406-rebase-message.sh | 44 |
2 files changed, 52 insertions, 5 deletions
diff --git a/git-rebase.sh b/git-rebase.sh index cbafa14ed5..9cf005677c 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -59,20 +59,23 @@ continue_merge () { die "$RESOLVEMSG" fi + cmt=`cat $dotest/current` if ! git diff-index --quiet HEAD then - if ! git-commit -C "`cat $dotest/current`" + if ! git-commit -C "$cmt" then echo "Commit failed, please do not call \"git commit\"" echo "directly, but instead do one of the following: " die "$RESOLVEMSG" fi - printf "Committed: %0${prec}d" $msgnum + printf "Committed: %0${prec}d " $msgnum + git rev-list --pretty=oneline -1 HEAD | \ + sed 's/^[a-f0-9]\+ //' else - printf "Already applied: %0${prec}d" $msgnum + printf "Already applied: %0${prec}d " $msgnum + git rev-list --pretty=oneline -1 "$cmt" | \ + sed 's/^[a-f0-9]\+ //' fi - echo ' '`git rev-list --pretty=oneline -1 HEAD | \ - sed 's/^[a-f0-9]\+ //'` prev_head=`git rev-parse HEAD^0` # save the resulting commit so we can read-tree on it later diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh new file mode 100755 index 0000000000..332b2b2feb --- /dev/null +++ b/t/t3406-rebase-message.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +test_description='messages from rebase operation' + +. ./test-lib.sh + +quick_one () { + echo "$1" >"file$1" && + git add "file$1" && + test_tick && + git commit -m "$1" +} + +test_expect_success setup ' + quick_one O && + git branch topic && + quick_one X && + quick_one A && + quick_one B && + quick_one Y && + + git checkout topic && + quick_one A && + quick_one B && + quick_one Z + +' + +cat >expect <<\EOF +Already applied: 0001 A +Already applied: 0002 B +Committed: 0003 Z +EOF + +test_expect_success 'rebase -m' ' + + git rebase -m master >report && + sed -n -e "/^Already applied: /p" \ + -e "/^Committed: /p" report >actual && + diff -u expect actual + +' + +test_done |