Merge branch 'cw/cherry-pick-allow-empty-message'

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

* cw/cherry-pick-allow-empty-message:
  cherry-pick: add --allow-empty-message option
This commit is contained in:
Junio C Hamano 2012-09-03 15:53:37 -07:00
commit 831287d37c
5 changed files with 16 additions and 0 deletions

View file

@ -118,6 +118,11 @@ effect to your index in a row.
previous commit are dropped. To force the inclusion of those commits
use `--keep-redundant-commits`.
--allow-empty-message::
By default, cherry-picking a commit with an empty message will fail.
This option overrides that behaviour, allowing commits with empty
messages to be cherry picked.
--keep-redundant-commits::
If a commit being cherry picked duplicates a commit already in the
current history, it will become empty. By default these

View file

@ -117,6 +117,7 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
OPT_END(),
OPT_END(),
OPT_END(),
OPT_END(),
};
if (opts->action == REPLAY_PICK) {
@ -124,6 +125,7 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
OPT_BOOLEAN('x', NULL, &opts->record_origin, "append commit name"),
OPT_BOOLEAN(0, "ff", &opts->allow_ff, "allow fast-forward"),
OPT_BOOLEAN(0, "allow-empty", &opts->allow_empty, "preserve initially empty commits"),
OPT_BOOLEAN(0, "allow-empty-message", &opts->allow_empty_message, "allow commits with empty messages"),
OPT_BOOLEAN(0, "keep-redundant-commits", &opts->keep_redundant_commits, "keep redundant, empty commits"),
OPT_END(),
};

View file

@ -311,6 +311,9 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts,
if (allow_empty)
argv_array_push(&array, "--allow-empty");
if (opts->allow_empty_message)
argv_array_push(&array, "--allow-empty-message");
rc = run_command_v_opt(array.argv, RUN_GIT_CMD);
argv_array_clear(&array);
return rc;

View file

@ -30,6 +30,7 @@ struct replay_opts {
int allow_ff;
int allow_rerere_auto;
int allow_empty;
int allow_empty_message;
int keep_redundant_commits;
int mainline;

View file

@ -53,6 +53,11 @@ test_expect_success 'index lockfile was removed' '
'
test_expect_success 'cherry-pick a commit with an empty message with --allow-empty-message' '
git checkout -f master &&
git cherry-pick --allow-empty-message empty-branch
'
test_expect_success 'cherry pick an empty non-ff commit without --allow-empty' '
git checkout master &&
echo fourth >>file2 &&