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 <gitster@pobox.com>
Junio C Hamano committed
Jan 17, 2010 at 22:31 UTC
14e5d40ca4f4f118fe03cbe5302309170b46096d
1 file changed
+14
-7
git-pull.sh
+14
-7
@@ -68,10 +68,10 @@ do
68
1,-X)
69
usage ;;
70
*,-X)
71
- xx="-X $2"
71
+ xx="-X $(git rev-parse --sq-quote "$2")"
72
shift ;;
73
*,*)
74
- xx="$1" ;;
74
+ xx=$(git rev-parse --sq-quote "$1") ;;
75
esac
76
merge_args="$merge_args$xx "
77
;;
@@ -228,8 +228,15 @@ then
228
fi
229
230
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"