aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-01-10 14:01:24 -0800
committerJunio C Hamano <gitster@pobox.com>2018-01-10 14:01:24 -0800
commitbc4efaf10306f23600649d4988eac0d4b2e216b7 (patch)
tree033fc524eba3db98a96b6e0da2d0ae387739d942
parent6366dd9000a3f67e47a30d94375a88dabc18ec6f (diff)
parentdd6fb0053ce5b6923505e64993d8061484665962 (diff)
downloadgit-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.sh9
-rwxr-xr-xt/t3418-rebase-continue.sh14
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 &&