summaryrefslogtreecommitdiff
path: root/builtin/revert.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2013-10-10 16:41:17 (GMT)
committerJonathan Nieder <jrnieder@gmail.com>2013-10-10 22:33:46 (GMT)
commitd644c5502fc576904a07fab35f43540fa9f2e7c2 (patch)
tree1ff885551bca9cb7c7e6c527fc49a755d20b93e1 /builtin/revert.c
parent182d7dc46b23b4a20985c93ea3a6ba3e6f267ff6 (diff)
downloadgit-d644c5502fc576904a07fab35f43540fa9f2e7c2.zip
git-d644c5502fc576904a07fab35f43540fa9f2e7c2.tar.gz
git-d644c5502fc576904a07fab35f43540fa9f2e7c2.tar.bz2
cherry-pick: handle "-" after parsing options
Currently, we only try converting argv[1] from "-" into "@{-1}". This means we do not notice "-" when used together with an option. Worse, when "git cherry-pick" is run with no options, we segfault. Fix this by doing the substitution after we have checked that there is something in argv to cherry-pick and know any remaining options are meant for the revision-listing machinery. This still does not handle "-" after the first non-cherry-pick option. For example, git cherry-pick foo~2 - bar~5 and git cherry-pick --no-merges - will still dump usage. Reported-by: Stefan Beller <stefanbeller@googlemail.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Diffstat (limited to 'builtin/revert.c')
-rw-r--r--builtin/revert.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/builtin/revert.c b/builtin/revert.c
index e264a15..38aaa16 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -198,6 +198,8 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
opts->revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
if (argc < 2)
usage_with_options(usage_str, options);
+ if (!strcmp(argv[1], "-"))
+ argv[1] = "@{-1}";
memset(&s_r_opt, 0, sizeof(s_r_opt));
s_r_opt.assume_dashdash = 1;
argc = setup_revisions(argc, argv, opts->revs, &s_r_opt);
@@ -232,8 +234,6 @@ int cmd_cherry_pick(int argc, const char **argv, const char *prefix)
memset(&opts, 0, sizeof(opts));
opts.action = REPLAY_PICK;
git_config(git_default_config, NULL);
- if (!strcmp(argv[1], "-"))
- argv[1] = "@{-1}";
parse_args(argc, argv, &opts);
res = sequencer_pick_revisions(&opts);
if (res < 0)