Skip to content

Commit

Permalink
Merge branch 'mg/sequencer-commit-messages-always-verbatim'
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
Junio C Hamano committed Mar 17, 2015
2 parents e5b8ce2 + 17d65f0 commit 795b014
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
5 changes: 5 additions & 0 deletions sequencer.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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)
Expand Down
28 changes: 28 additions & 0 deletions t/t3511-cherry-pick-x.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand All @@ -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
'
Expand Down Expand Up @@ -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

0 comments on commit 795b014

Please sign in to comment.