X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-bisect-script;h=649b7026eb8b69045144da4bec6cdb4879f23c7a;hb=670f5fe34f0f6a363297d5dcd73051089b78fe82;hp=2233b4143b2471c6dbb30d4910ba8bdf7455ec7c;hpb=8cc6a083198877fc32224b73c61ec6e6cf8a96f5;p=git.git diff --git a/git-bisect-script b/git-bisect-script index 2233b414..649b7026 100755 --- a/git-bisect-script +++ b/git-bisect-script @@ -58,7 +58,7 @@ bisect_start() { bisect_bad() { bisect_autostart case "$#" in 0 | 1) ;; *) usage ;; esac - rev=$(git-rev-parse --revs-only --verify --default HEAD "$@") || exit + rev=$(git-rev-parse --verify --default HEAD "$@") || exit echo "$rev" > "$GIT_DIR/refs/bisect/bad" bisect_auto_next } @@ -67,7 +67,7 @@ bisect_good() { bisect_autostart case "$#" in 0) revs=$(git-rev-parse --verify HEAD) || exit ;; - *) revs=$(git-rev-parse --revs-only "$@") || exit ;; + *) revs=$(git-rev-parse --revs-only --no-flags "$@") || exit ;; esac for rev in $revs do @@ -105,12 +105,16 @@ bisect_next() { good=$(git-rev-parse --sq --revs-only --not \ $(cd "$GIT_DIR" && ls refs/bisect/good-*)) && rev=$(eval "git-rev-list --bisect $good $bad") || exit - nr=$(eval "git-rev-list $rev $good" | wc -l) || exit - if [ "$nr" -le "1" ]; then - echo "$bad is first bad commit" - git-diff-tree --pretty $bad + if [ -z "$rev" ]; then + echo "$bad was both good and bad" + exit 1 + fi + if [ "$rev" = "$bad" ]; then + echo "$rev is first bad commit" + git-diff-tree --pretty $rev exit 0 fi + nr=$(eval "git-rev-list $rev $good" | wc -l) || exit echo "Bisecting: $nr revisions left to test after this" echo "$rev" > "$GIT_DIR/refs/heads/new-bisect" git checkout new-bisect || exit