diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2008-09-06 07:27:03 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-09-05 22:31:43 -0700 |
commit | 6a54d976f654ef15ce6db7d52c76677dfdd0de6c (patch) | |
tree | 6fd2ff85911d8bfd5e249af8f67ee22367480e29 /git-bisect.sh | |
parent | c9c4e2d5a25bbf637780f9b83e74c2a26fb957f5 (diff) | |
download | git-6a54d976f654ef15ce6db7d52c76677dfdd0de6c.tar.gz |
bisect: remove "checkout_done" variable used when checking merge bases
Using return values from the following functions:
- check_merge_bases
- check_good_are_ancestors_of_bad
seems simpler.
While at it, let's add some comments to better document the above
functions.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-bisect.sh')
-rwxr-xr-x | git-bisect.sh | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/git-bisect.sh b/git-bisect.sh index 69a9a565e0..79de7017e8 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -384,6 +384,17 @@ We continue anyway. EOF } +# +# "check_merge_bases" checks that merge bases are not "bad". +# +# - If one is "good", that's good, we have nothing to do. +# - If one is "bad", it means the user assumed something wrong +# and we must exit. +# - If one is "skipped", we can't know but we should warn. +# - If we don't know, we should check it out and ask the user to test. +# +# In the last case we will return 1, and otherwise 0. +# check_merge_bases() { _bad="$1" _good="$2" @@ -398,12 +409,20 @@ check_merge_bases() { handle_skipped_merge_base "$_mb" "$_bad" "$_good" else bisect_checkout "$_mb" "a merge base must be tested" - checkout_done=1 - return + return 1 fi done + return 0 } +# +# "check_good_are_ancestors_of_bad" checks that all "good" revs are +# ancestor of the "bad" rev. +# +# If that's not the case, we need to check the merge bases. +# If a merge base must be tested by the user we return 1 and +# otherwise 0. +# check_good_are_ancestors_of_bad() { test -f "$GIT_DIR/BISECT_ANCESTORS_OK" && return @@ -417,11 +436,13 @@ check_good_are_ancestors_of_bad() { _side=$(git rev-list $_good ^$_bad) if test -n "$_side"; then + # Return if a checkout was done check_merge_bases "$_bad" "$_good" "$_skip" || return - test "$checkout_done" -eq "1" && return fi : > "$GIT_DIR/BISECT_ANCESTORS_OK" + + return 0 } bisect_next() { @@ -437,8 +458,9 @@ bisect_next() { "refs/bisect/skip-*" | tr '\012' ' ') && # Maybe some merge bases must be tested first - check_good_are_ancestors_of_bad "$bad" "$good" "$skip" || exit - test "$checkout_done" -eq "1" && checkout_done='' && return + check_good_are_ancestors_of_bad "$bad" "$good" "$skip" + # Return now if a checkout has already been done + test "$?" -eq "1" && return # Get bisection information BISECT_OPT='' |