diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-01-10 14:01:24 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-01-10 14:01:24 -0800 |
commit | bc4efaf10306f23600649d4988eac0d4b2e216b7 (patch) | |
tree | 033fc524eba3db98a96b6e0da2d0ae387739d942 | |
parent | 6366dd9000a3f67e47a30d94375a88dabc18ec6f (diff) | |
parent | dd6fb0053ce5b6923505e64993d8061484665962 (diff) | |
download | git-bc4efaf10306f23600649d4988eac0d4b2e216b7.tar.gz git-bc4efaf10306f23600649d4988eac0d4b2e216b7.tar.xz |
Merge branch 'js/fix-merge-arg-quoting-in-rebase-p'
"git rebase -p -X<option>" did not propagate the option properly
down to underlying merge strategy backend.
* js/fix-merge-arg-quoting-in-rebase-p:
rebase -p: fix quoting when calling `git merge`
-rw-r--r-- | git-rebase--interactive.sh | 9 | ||||
-rwxr-xr-x | t/t3418-rebase-continue.sh | 14 |
2 files changed, 20 insertions, 3 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index b7f95672b..d47bd2959 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -392,9 +392,12 @@ pick_one_preserving_merges () { new_parents=${new_parents# $first_parent} merge_args="--no-log --no-ff" if ! do_with_author output eval \ - 'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \ - $allow_rerere_autoupdate $merge_args \ - $strategy_args -m "$msg_content" $new_parents' + git merge ${gpg_sign_opt:+$(git rev-parse \ + --sq-quote "$gpg_sign_opt")} \ + $allow_rerere_autoupdate "$merge_args" \ + "$strategy_args" \ + -m $(git rev-parse --sq-quote "$msg_content") \ + "$new_parents" then printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG die_with_patch $sha1 "$(eval_gettext "Error redoing merge \$sha1")" diff --git a/t/t3418-rebase-continue.sh b/t/t3418-rebase-continue.sh index fcfdd197b..7c91a85f4 100755 --- a/t/t3418-rebase-continue.sh +++ b/t/t3418-rebase-continue.sh @@ -74,6 +74,20 @@ test_expect_success 'rebase --continue remembers merge strategy and options' ' test -f funny.was.run ' +test_expect_success 'rebase passes merge strategy options correctly' ' + rm -fr .git/rebase-* && + git reset --hard commit-new-file-F3-on-topic-branch && + test_commit theirs-to-merge && + git reset --hard HEAD^ && + test_commit some-commit && + test_tick && + git merge --no-ff theirs-to-merge && + FAKE_LINES="1 edit 2 3" git rebase -i -f -p -m \ + -s recursive --strategy-option=theirs HEAD~2 && + test_commit force-change && + git rebase --continue +' + test_expect_success 'setup rerere database' ' rm -fr .git/rebase-* && git reset --hard commit-new-file-F3-on-topic-branch && |