diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-04-16 00:45:52 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-16 00:45:52 -0700 |
commit | a17b1d2f0b3128be6f116bf22b58244b310d27b9 (patch) | |
tree | 6c1fc3fe2a6630902bbd37f45d3e94437a5039b2 /git-bisect.sh | |
parent | 189d6b8bfae62ab0c0bc62877ba97d6d88ae1595 (diff) | |
parent | 464509f790f409d95e0820364ef7296d82942d8c (diff) | |
download | git-a17b1d2f0b3128be6f116bf22b58244b310d27b9.tar.gz |
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-x | git-bisect.sh | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/git-bisect.sh b/git-bisect.sh index 408775a51e..d8d9bfde4c 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." ;; *) |