Skip to content

Commit 14e5d40

Browse files
committed
pull: Fix parsing of -X<option>
As -X parameter can contain arbitrary $IFS characters, we need to properly quote it from the shell while forming the command line. Signed-off-by: Junio C Hamano <[email protected]>
1 parent ee2c795 commit 14e5d40

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

git-pull.sh

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ do
6868
1,-X)
6969
usage ;;
7070
*,-X)
71-
xx="-X $2"
71+
xx="-X $(git rev-parse --sq-quote "$2")"
7272
shift ;;
7373
*,*)
74-
xx="$1" ;;
74+
xx=$(git rev-parse --sq-quote "$1") ;;
7575
esac
7676
merge_args="$merge_args$xx "
7777
;;
@@ -228,8 +228,15 @@ then
228228
fi
229229

230230
merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
231-
test true = "$rebase" &&
232-
exec git-rebase $diffstat $strategy_args $merge_args --onto $merge_head \
233-
${oldremoteref:-$merge_head}
234-
exec git-merge $diffstat $no_commit $squash $no_ff $ff_only $log_arg $strategy_args $merge_args \
235-
"$merge_name" HEAD $merge_head $verbosity
231+
case "$rebase" in
232+
true)
233+
eval="git-rebase $diffstat $strategy_args $merge_args"
234+
eval="$eval --onto $merge_head ${oldremoteref:-$merge_head}"
235+
;;
236+
*)
237+
eval="git-merge $diffstat $no_commit $squash $no_ff $ff_only"
238+
eval="$eval $log_arg $strategy_args $merge_args"
239+
eval="$eval \"$merge_name\" HEAD $merge_head $verbosity"
240+
;;
241+
esac
242+
eval "exec $eval"

0 commit comments

Comments
 (0)