Skip to content

Commit 41a3e3a

Browse files
committed
Merge branch 'jc/maint-rebase-am' into maint
* jc/maint-rebase-am: rebase: do not munge commit log message Conflicts: git-am.sh
2 parents 5634cf2 + 5e835ca commit 41a3e3a

File tree

2 files changed

+55
-5
lines changed

2 files changed

+55
-5
lines changed

git-am.sh

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -327,11 +327,20 @@ do
327327
echo "Patch is empty. Was it split wrong?"
328328
stop_here $this
329329
}
330-
SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' "$dotest/info")"
331-
case "$keep_subject" in -k) SUBJECT="[PATCH] $SUBJECT" ;; esac
332-
333-
(printf '%s\n\n' "$SUBJECT"; cat "$dotest/msg") |
334-
git stripspace > "$dotest/msg-clean"
330+
if test -f "$dotest/rebasing" &&
331+
commit=$(sed -e 's/^From \([0-9a-f]*\) .*/\1/' \
332+
-e q "$dotest/$msgnum") &&
333+
test "$(git cat-file -t "$commit")" = commit
334+
then
335+
git cat-file commit "$commit" |
336+
sed -e '1,/^$/d' >"$dotest/msg-clean"
337+
else
338+
SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' "$dotest/info")"
339+
case "$keep_subject" in -k) SUBJECT="[PATCH] $SUBJECT" ;; esac
340+
341+
(printf '%s\n\n' "$SUBJECT"; cat "$dotest/msg") |
342+
git stripspace > "$dotest/msg-clean"
343+
fi
335344
;;
336345
esac
337346

t/t3408-rebase-multi-line.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/sh
2+
3+
test_description='rebasing a commit with multi-line first paragraph.'
4+
5+
. ./test-lib.sh
6+
7+
test_expect_success setup '
8+
9+
>file &&
10+
git add file &&
11+
test_tick &&
12+
git commit -m initial &&
13+
14+
echo hello >file &&
15+
test_tick &&
16+
git commit -a -m "A sample commit log message that has a long
17+
summary that spills over multiple lines.
18+
19+
But otherwise with a sane description."
20+
21+
git branch side &&
22+
23+
git reset --hard HEAD^ &&
24+
>elif &&
25+
git add elif &&
26+
test_tick &&
27+
git commit -m second
28+
29+
'
30+
31+
test_expect_success rebase '
32+
33+
git checkout side &&
34+
git rebase master &&
35+
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
36+
git cat-file commit side@{1} | sed -e "1,/^$/d" >expect &&
37+
test_cmp expect actual
38+
39+
'
40+
41+
test_done

0 commit comments

Comments
 (0)