diff options
author | Junio C Hamano <junkio@cox.net> | 2005-11-27 17:42:05 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-11-28 23:11:38 -0800 |
commit | e9a45d75b5eccfc288c4533b5e34af1f77dd32c9 (patch) | |
tree | 9f21e629a7f201c327ddfdf32885d436f7637e74 | |
parent | b3cfd939c330211c9812f814094aa1dbe9531bdc (diff) | |
download | git-e9a45d75b5eccfc288c4533b5e34af1f77dd32c9.tar.gz git-e9a45d75b5eccfc288c4533b5e34af1f77dd32c9.tar.xz |
bisect: quote pathnames for eval safety.
... and make sure they are on the same line.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-x | git-bisect.sh | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/git-bisect.sh b/git-bisect.sh index 2455f00ee..68838f3fa 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -1,9 +1,19 @@ #!/bin/sh . git-sh-setup +sq() { + perl -e ' + for (@ARGV) { + s/'\''/'\'\\\\\'\''/g; + print " '\''$_'\''"; + } + print "\n"; + ' "$@" +} + usage() { echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize] -git bisect start reset bisect state and start bisection. +git bisect start [<pathspec>] reset bisect state and start bisection. git bisect bad [<rev>] mark <rev> a known-bad revision. git bisect good [<rev>...] mark <rev>... known-good revisions. git bisect next find next bisection to test and check it out. @@ -56,8 +66,11 @@ bisect_start() { rm -f "$GIT_DIR/refs/heads/bisect" rm -rf "$GIT_DIR/refs/bisect/" mkdir "$GIT_DIR/refs/bisect" - echo "git-bisect start $@" >"$GIT_DIR/BISECT_LOG" - echo "$@" > "$GIT_DIR/BISECT_NAMES" + { + echo -n "git-bisect start" + sq "$@" + } >"$GIT_DIR/BISECT_LOG" + sq "$@" >"$GIT_DIR/BISECT_NAMES" } bisect_bad() { @@ -142,7 +155,8 @@ bisect_next() { bisect_visualize() { bisect_next_check fail - gitk bisect/bad --not `cd "$GIT_DIR/refs" && echo bisect/good-*` -- $(cat $GIT_DIR/BISECT_NAMES) + not=`cd "$GIT_DIR/refs" && echo bisect/good-*` + eval gitk bisect/bad --not $not -- $(cat "$GIT_DIR/BISECT_NAMES") } bisect_reset() { @@ -173,7 +187,8 @@ bisect_replay () { test "$bisect" = "git-bisect" || continue case "$command" in start) - bisect_start + cmd="bisect_start $rev" + eval "$cmd" ;; good) echo "$rev" >"$GIT_DIR/refs/bisect/good-$rev" |