зеркало из https://github.com/microsoft/git.git
Merge branch 'hu/cherry-pick-previous-branch'
"git cherry-pick" without further options would segfault. Could use a follow-up to handle '-' after argv[1] better. * hu/cherry-pick-previous-branch: cherry-pick: handle "-" after parsing options
This commit is contained in:
Коммит
f2c1b01c24
|
@ -168,6 +168,8 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
|
||||||
opts->revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
|
opts->revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
usage_with_options(usage_str, options);
|
usage_with_options(usage_str, options);
|
||||||
|
if (!strcmp(argv[1], "-"))
|
||||||
|
argv[1] = "@{-1}";
|
||||||
memset(&s_r_opt, 0, sizeof(s_r_opt));
|
memset(&s_r_opt, 0, sizeof(s_r_opt));
|
||||||
s_r_opt.assume_dashdash = 1;
|
s_r_opt.assume_dashdash = 1;
|
||||||
argc = setup_revisions(argc, argv, opts->revs, &s_r_opt);
|
argc = setup_revisions(argc, argv, opts->revs, &s_r_opt);
|
||||||
|
@ -202,8 +204,6 @@ int cmd_cherry_pick(int argc, const char **argv, const char *prefix)
|
||||||
memset(&opts, 0, sizeof(opts));
|
memset(&opts, 0, sizeof(opts));
|
||||||
opts.action = REPLAY_PICK;
|
opts.action = REPLAY_PICK;
|
||||||
git_config(git_default_config, NULL);
|
git_config(git_default_config, NULL);
|
||||||
if (!strcmp(argv[1], "-"))
|
|
||||||
argv[1] = "@{-1}";
|
|
||||||
parse_args(argc, argv, &opts);
|
parse_args(argc, argv, &opts);
|
||||||
res = sequencer_pick_revisions(&opts);
|
res = sequencer_pick_revisions(&opts);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
|
|
|
@ -129,4 +129,16 @@ test_expect_success 'cherry-pick "-" is meaningless without checkout' '
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cherry-pick "-" works with arguments' '
|
||||||
|
git checkout -b side-branch &&
|
||||||
|
test_commit change actual change &&
|
||||||
|
git checkout master &&
|
||||||
|
git cherry-pick -s - &&
|
||||||
|
echo "Signed-off-by: C O Mitter <committer@example.com>" >expect &&
|
||||||
|
git cat-file commit HEAD | grep ^Signed-off-by: >signoff &&
|
||||||
|
test_cmp expect signoff &&
|
||||||
|
echo change >expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче