From d644c5502fc576904a07fab35f43540fa9f2e7c2 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 10 Oct 2013 12:41:17 -0400 Subject: 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 Signed-off-by: Jeff King Signed-off-by: Jonathan Nieder --- t/t3501-revert-cherry-pick.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 't/t3501-revert-cherry-pick.sh') diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh index 6281619141..12c246f7f4 100755 --- a/t/t3501-revert-cherry-pick.sh +++ b/t/t3501-revert-cherry-pick.sh @@ -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 " >expect && + git cat-file commit HEAD | grep ^Signed-off-by: >signoff && + test_cmp expect signoff && + echo change >expect && + test_cmp expect actual +' + test_done -- cgit v1.2.1