@matheusbsbs / matheus-bagliano / commits / 14e5d40ca4
Fork 0

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"