bisect: quote pathnames for eval safety.
... and make sure they are on the same line. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
@ -1,9 +1,19 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
|
sq() {
|
||||||
|
perl -e '
|
||||||
|
for (@ARGV) {
|
||||||
|
s/'\''/'\'\\\\\'\''/g;
|
||||||
|
print " '\''$_'\''";
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
' "$@"
|
||||||
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize]
|
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 bad [<rev>] mark <rev> a known-bad revision.
|
||||||
git bisect good [<rev>...] mark <rev>... known-good revisions.
|
git bisect good [<rev>...] mark <rev>... known-good revisions.
|
||||||
git bisect next find next bisection to test and check it out.
|
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 -f "$GIT_DIR/refs/heads/bisect"
|
||||||
rm -rf "$GIT_DIR/refs/bisect/"
|
rm -rf "$GIT_DIR/refs/bisect/"
|
||||||
mkdir "$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() {
|
bisect_bad() {
|
||||||
@ -142,7 +155,8 @@ bisect_next() {
|
|||||||
|
|
||||||
bisect_visualize() {
|
bisect_visualize() {
|
||||||
bisect_next_check fail
|
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() {
|
bisect_reset() {
|
||||||
@ -173,7 +187,8 @@ bisect_replay () {
|
|||||||
test "$bisect" = "git-bisect" || continue
|
test "$bisect" = "git-bisect" || continue
|
||||||
case "$command" in
|
case "$command" in
|
||||||
start)
|
start)
|
||||||
bisect_start
|
cmd="bisect_start $rev"
|
||||||
|
eval "$cmd"
|
||||||
;;
|
;;
|
||||||
good)
|
good)
|
||||||
echo "$rev" >"$GIT_DIR/refs/bisect/good-$rev"
|
echo "$rev" >"$GIT_DIR/refs/bisect/good-$rev"
|
||||||
|
Reference in New Issue
Block a user