summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-03-17 16:01:31 -0700
committerJunio C Hamano <gitster@pobox.com>2015-03-17 16:01:32 -0700
commit795b01422da12da3e576fb3468c627b78948b3dc (patch)
tree2dcec27ba4662ef920a034680e37f48d3f4a7e5d
parente5b8ce243cc41a859469098a0f26d7ee1b1a49bc (diff)
parent17d65f03e1d2d1678d9960a4f71e4caccacf500f (diff)
downloadgit-795b01422da12da3e576fb3468c627b78948b3dc.tar.gz
Merge branch 'mg/sequencer-commit-messages-always-verbatim'
"git cherry-pick" used to clean-up the log message even when it is merely replaying an existing commit. It now replays the message verbatim unless you are editing the message of resulting commits. * mg/sequencer-commit-messages-always-verbatim: sequencer: preserve commit messages
-rw-r--r--sequencer.c5
-rwxr-xr-xt/t3511-cherry-pick-x.sh28
2 files changed, 33 insertions, 0 deletions
diff --git a/sequencer.c b/sequencer.c
index 32aa05ed82..c4f4b7d571 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -373,6 +373,7 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts,
{
struct argv_array array;
int rc;
+ const char *value;
argv_array_init(&array);
argv_array_push(&array, "commit");
@@ -385,6 +386,10 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts,
if (!opts->edit) {
argv_array_push(&array, "-F");
argv_array_push(&array, defmsg);
+ if (!opts->signoff &&
+ !opts->record_origin &&
+ git_config_get_value("commit.cleanup", &value))
+ argv_array_push(&array, "--cleanup=verbatim");
}
if (allow_empty)
diff --git a/t/t3511-cherry-pick-x.sh b/t/t3511-cherry-pick-x.sh
index f97727975b..b7dff09d06 100755
--- a/t/t3511-cherry-pick-x.sh
+++ b/t/t3511-cherry-pick-x.sh
@@ -36,6 +36,20 @@ mesg_with_cherry_footer="$mesg_with_footer_sob
(cherry picked from commit da39a3ee5e6b4b0d3255bfef95601890afd80709)
Tested-by: C.U. Thor <cuthor@example.com>"
+mesg_unclean="$mesg_one_line
+
+
+leading empty lines
+
+
+consecutive empty lines
+
+# hash tag comment
+
+trailing empty lines
+
+
+"
test_expect_success setup '
git config advice.detachedhead false &&
@@ -53,6 +67,10 @@ test_expect_success setup '
test_commit "$mesg_with_footer_sob" foo b mesg-with-footer-sob &&
git reset --hard initial &&
test_commit "$mesg_with_cherry_footer" foo b mesg-with-cherry-footer &&
+ git reset --hard initial &&
+ test_config commit.cleanup verbatim &&
+ test_commit "$mesg_unclean" foo b mesg-unclean &&
+ test_unconfig commit.cleanup &&
pristine_detach initial &&
test_commit conflicting unrelated
'
@@ -216,4 +234,14 @@ test_expect_success 'cherry-pick -x -s treats "(cherry picked from..." line as p
test_cmp expect actual
'
+test_expect_success 'cherry-pick preserves commit message' '
+ pristine_detach initial &&
+ printf "$mesg_unclean" >expect &&
+ git log -1 --pretty=format:%B mesg-unclean >actual &&
+ test_cmp expect actual &&
+ git cherry-pick mesg-unclean &&
+ git log -1 --pretty=format:%B >actual &&
+ test_cmp expect actual
+'
+
test_done