Merge branch 'jc/builtin-am-signoff-regression-fix'
authorJunio C Hamano <gitster@pobox.com>
Tue, 8 Sep 2015 22:34:57 +0000 (15:34 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 8 Sep 2015 22:35:05 +0000 (15:35 -0700)
Recent "git am" had regression when adding a Signed-off-by line
with its "-s" option by an unintended tightening of how an existing
trailer block is detected.

* jc/builtin-am-signoff-regression-fix:
am: match --signoff to the original scripted version

1  2 
builtin/am.c
t/t4150-am.sh
diff --cc builtin/am.c
Simple merge
diff --cc t/t4150-am.sh
index af6053a2429785c3d9981194177f05aa4beb57d2,5e4855595bf31bc1de1355b856d531669e7f7ae1..b41bd17264f93d54d5aa280fbc305cebb18950a0
@@@ -873,40 -873,52 +873,88 @@@ test_expect_success 'am --message-id -
        test_cmp expected actual
  '
  
 +test_expect_success 'am -3 works with rerere' '
 +      rm -fr .git/rebase-apply &&
 +      git reset --hard &&
 +
 +      # make patches one->two and two->three...
 +      test_commit one file &&
 +      test_commit two file &&
 +      test_commit three file &&
 +      git format-patch -2 --stdout >seq.patch &&
 +
 +      # and create a situation that conflicts...
 +      git reset --hard one &&
 +      test_commit other file &&
 +
 +      # enable rerere...
 +      test_config rerere.enabled true &&
 +      test_when_finished "rm -rf .git/rr-cache" &&
 +
 +      # ...and apply. Our resolution is to skip the first
 +      # patch, and the rerere the second one.
 +      test_must_fail git am -3 seq.patch &&
 +      test_must_fail git am --skip &&
 +      echo resolved >file &&
 +      git add file &&
 +      git am --resolved &&
 +
 +      # now apply again, and confirm that rerere engaged (we still
 +      # expect failure from am because rerere does not auto-commit
 +      # for us).
 +      git reset --hard other &&
 +      test_must_fail git am -3 seq.patch &&
 +      test_must_fail git am --skip &&
 +      echo resolved >expect &&
 +      test_cmp expect file
 +'
 +
+ test_expect_success 'am -s unexpected trailer block' '
+       rm -fr .git/rebase-apply &&
+       git reset --hard &&
+       echo signed >file &&
+       git add file &&
+       cat >msg <<-EOF &&
+       subject here
+       Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
+       [jc: tweaked log message]
+       Signed-off-by: J C H <j@c.h>
+       EOF
+       git commit -F msg &&
+       git cat-file commit HEAD | sed -e '1,/^$/d' >original &&
+       git format-patch --stdout -1 >patch &&
+       git reset --hard HEAD^ &&
+       git am -s patch &&
+       (
+               cat original &&
+               echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
+       ) >expect &&
+       git cat-file commit HEAD | sed -e '1,/^$/d' >actual &&
+       test_cmp expect actual &&
+       cat >msg <<-\EOF &&
+       subject here
+       We make sure that there is a blank line between the log
+       message proper and Signed-off-by: line added.
+       EOF
+       git reset HEAD^ &&
+       git commit -F msg file &&
+       git cat-file commit HEAD | sed -e '1,/^$/d' >original &&
+       git format-patch --stdout -1 >patch &&
+       git reset --hard HEAD^ &&
+       git am -s patch &&
+       (
+               cat original &&
+               echo &&
+               echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
+       ) >expect &&
+       git cat-file commit HEAD | sed -e '1,/^$/d' >actual &&
+       test_cmp expect actual
+ '
  test_done