summaryrefslogtreecommitdiff
path: root/git-bisect.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-04-16 07:45:52 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-04-16 07:45:52 (GMT)
commita17b1d2f0b3128be6f116bf22b58244b310d27b9 (patch)
tree6c1fc3fe2a6630902bbd37f45d3e94437a5039b2 /git-bisect.sh
parent189d6b8bfae62ab0c0bc62877ba97d6d88ae1595 (diff)
parent464509f790f409d95e0820364ef7296d82942d8c (diff)
downloadgit-a17b1d2f0b3128be6f116bf22b58244b310d27b9.zip
git-a17b1d2f0b3128be6f116bf22b58244b310d27b9.tar.gz
git-a17b1d2f0b3128be6f116bf22b58244b310d27b9.tar.bz2
Merge branch 'maint'
* maint: git-bisect: make "start", "good" and "skip" succeed or fail atomically git-am: cope better with an empty Subject: line Ignore leading empty lines while summarizing merges bisect: squelch "fatal: ref HEAD not a symref" misleading message builtin-apply: Show a more descriptive error on failure when opening a patch Clarify documentation of git-cvsserver, particularly in relation to git-shell
Diffstat (limited to 'git-bisect.sh')
-rwxr-xr-xgit-bisect.sh16
1 files changed, 11 insertions, 5 deletions
diff --git a/git-bisect.sh b/git-bisect.sh
index 408775a..d8d9bfd 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -66,9 +66,10 @@ bisect_start() {
# Verify HEAD. If we were bisecting before this, reset to the
# top-of-line master first!
#
- head=$(GIT_DIR="$GIT_DIR" git symbolic-ref HEAD) ||
+ head=$(GIT_DIR="$GIT_DIR" git symbolic-ref -q HEAD) ||
head=$(GIT_DIR="$GIT_DIR" git rev-parse --verify HEAD) ||
die "Bad HEAD - I need a HEAD"
+ start_head=''
case "$head" in
refs/heads/bisect)
if [ -s "$GIT_DIR/BISECT_START" ]; then
@@ -82,7 +83,7 @@ bisect_start() {
# This error message should only be triggered by cogito usage,
# and cogito users should understand it relates to cg-seek.
[ -s "$GIT_DIR/head-name" ] && die "won't bisect on seeked tree"
- echo "${head#refs/heads/}" >"$GIT_DIR/BISECT_START"
+ start_head="${head#refs/heads/}"
;;
*)
die "Bad HEAD - strange symbolic ref"
@@ -103,6 +104,7 @@ bisect_start() {
done
orig_args=$(sq "$@")
bad_seen=0
+ eval=''
while [ $# -gt 0 ]; do
arg="$1"
case "$arg" in
@@ -120,13 +122,15 @@ bisect_start() {
0) state='bad' ; bad_seen=1 ;;
*) state='good' ;;
esac
- bisect_write "$state" "$rev" 'nolog'
+ eval="$eval bisect_write '$state' '$rev' 'nolog'; "
shift
;;
esac
done
sq "$@" >"$GIT_DIR/BISECT_NAMES"
+ test -n "$start_head" && echo "$start_head" >"$GIT_DIR/BISECT_START"
+ eval "$eval"
echo "git-bisect start$orig_args" >>"$GIT_DIR/BISECT_LOG"
bisect_auto_next
}
@@ -157,12 +161,14 @@ bisect_state() {
bisect_write "$state" "$rev" ;;
2,bad|*,good|*,skip)
shift
+ eval=''
for rev in "$@"
do
sha=$(git rev-parse --verify "$rev^{commit}") ||
die "Bad rev input: $rev"
- bisect_write "$state" "$sha"
- done ;;
+ eval="$eval bisect_write '$state' '$sha'; "
+ done
+ eval "$eval" ;;
*,bad)
die "'git bisect bad' can take only one argument." ;;
*)