-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rebase: do not munge commit log message
Traditionally git-rebase was implemented in terms of "format-patch" piped to "am -3", to strike balance between speed (because it avoids a rather expensive read-tree/merge-recursive machinery most of the time) and flexibility (the magic "-3" allows it to fall back to 3-way merge as necessary). However, this combination has one flaw when dealing with a nonstandard commit log message format that has more than one lines in the first paragraph. This teaches "git am --rebasing" to take advantage of the fact that the mbox message "git rebase" prepares for it records the original commit object name, to get the log message from the original commit object instead. Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Junio C Hamano
committed
Apr 16, 2008
1 parent
464509f
commit 5e835ca
Showing
2 changed files
with
55 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#!/bin/sh | ||
|
||
test_description='rebasing a commit with multi-line first paragraph.' | ||
|
||
. ./test-lib.sh | ||
|
||
test_expect_success setup ' | ||
>file && | ||
git add file && | ||
test_tick && | ||
git commit -m initial && | ||
echo hello >file && | ||
test_tick && | ||
git commit -a -m "A sample commit log message that has a long | ||
summary that spills over multiple lines. | ||
But otherwise with a sane description." | ||
git branch side && | ||
git reset --hard HEAD^ && | ||
>elif && | ||
git add elif && | ||
test_tick && | ||
git commit -m second | ||
' | ||
|
||
test_expect_success rebase ' | ||
git checkout side && | ||
git rebase master && | ||
git cat-file commit HEAD | sed -e "1,/^$/d" >actual && | ||
git cat-file commit side@{1} | sed -e "1,/^$/d" >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_done |