{"thread":{"id":"10447","subject":"[PATCH 3/3] Bisect: refactor \"bisect_{bad,good,skip}\" into \"bisect_state\".","startedAt":"2007-10-24T05:01:21Z","lastAt":"2007-10-24T05:01:21Z","messageCount":1,"participants":["Christian Couder"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"57057","messageId":"20071024070121.cf03919c.chriscool@tuxfamily.org","threadId":"10447","inReplyTo":null,"subject":"[PATCH 3/3] Bisect: refactor \"bisect_{bad,good,skip}\" into \"bisect_state\".","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2007-10-24T05:01:21Z","receivedAt":"2007-10-24T05:01:21Z","isPatch":true,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Signed-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Shawn O. Pearce <spearce@spearce.org>\n---\n git-bisect.sh |   82 +++++++++++++++++++++-----------------------------------\n 1 files changed, 31 insertions(+), 51 deletions(-)\n\ndiff --git a/git-bisect.sh b/git-bisect.sh\nindex 61a2956..f8d0099 100755\n--- a/git-bisect.sh\n+++ b/git-bisect.sh\n@@ -135,47 +135,33 @@ bisect_write() {\n \ttest -z \"$nolog\" && echo \"git-bisect $state $rev\" >>\"$GIT_DIR/BISECT_LOG\"\n }\n \n-bisect_bad() {\n+bisect_state() {\n \tbisect_autostart\n-\tcase \"$#\" in\n-\t0)\n-\t\trev=$(git rev-parse --verify HEAD) ;;\n-\t1)\n-\t\trev=$(git rev-parse --verify \"$1^{commit}\") ;;\n+\tstate=$1\n+\tcase \"$#,$state\" in\n+\t0,*)\n+\t\tdie \"Please call 'bisect_state' with at least one argument.\" ;;\n+\t1,bad|1,good|1,skip)\n+\t\trev=$(git rev-parse --verify HEAD) ||\n+\t\t\tdie \"Bad rev input: HEAD\"\n+\t\tbisect_write \"$state\" \"$rev\" ;;\n+\t2,bad)\n+\t\trev=$(git rev-parse --verify \"$2^{commit}\") ||\n+\t\t\tdie \"Bad rev input: $2\"\n+\t\tbisect_write \"$state\" \"$rev\" ;;\n+\t*,good|*,skip)\n+\t\tshift\n+\t\trevs=$(git rev-parse --revs-only --no-flags \"$@\") &&\n+\t\t\ttest '' != \"$revs\" || die \"Bad rev input: $@\"\n+\t\tfor rev in $revs\n+\t\tdo\n+\t\t\trev=$(git rev-parse --verify \"$rev^{commit}\") ||\n+\t\t\t\tdie \"Bad rev commit: $rev^{commit}\"\n+\t\t\tbisect_write \"$state\" \"$rev\"\n+\t\tdone ;;\n \t*)\n \t\tusage ;;\n-\tesac || exit\n-\tbisect_write 'bad' \"$rev\"\n-\tbisect_auto_next\n-}\n-\n-bisect_good() {\n-\tbisect_autostart\n-\tcase \"$#\" in\n-\t0)    revs=$(git rev-parse --verify HEAD) || exit ;;\n-\t*)    revs=$(git rev-parse --revs-only --no-flags \"$@\") &&\n-\t\ttest '' != \"$revs\" || die \"Bad rev input: $@\" ;;\n \tesac\n-\tfor rev in $revs\n-\tdo\n-\t\trev=$(git rev-parse --verify \"$rev^{commit}\") || exit\n-\t\tbisect_write 'good' \"$rev\"\n-\tdone\n-\tbisect_auto_next\n-}\n-\n-bisect_skip() {\n-\tbisect_autostart\n-\tcase \"$#\" in\n-\t0)    revs=$(git rev-parse --verify HEAD) || exit ;;\n-\t*)    revs=$(git rev-parse --revs-only --no-flags \"$@\") &&\n-\t\ttest '' != \"$revs\" || die \"Bad rev input: $@\" ;;\n-\tesac\n-\tfor rev in $revs\n-\tdo\n-\t\trev=$(git rev-parse --verify \"$rev^{commit}\") || exit\n-\t\tbisect_write 'skip' \"$rev\"\n-\tdone\n \tbisect_auto_next\n }\n \n@@ -405,24 +391,22 @@ bisect_run () {\n \t  exit $res\n       fi\n \n-      # Use \"bisect_good\" or \"bisect_bad\"\n-      # depending on run success or failure.\n+      # Find current state depending on run success or failure.\n       if [ $res -gt 0 ]; then\n-\t  next_bisect='bisect_bad'\n+\t  state='bad'\n       else\n-\t  next_bisect='bisect_good'\n+\t  state='good'\n       fi\n \n-      # We have to use a subshell because bisect_good or\n-      # bisect_bad functions can exit.\n-      ( $next_bisect > \"$GIT_DIR/BISECT_RUN\" )\n+      # We have to use a subshell because \"bisect_state\" can exit.\n+      ( bisect_state $state > \"$GIT_DIR/BISECT_RUN\" )\n       res=$?\n \n       cat \"$GIT_DIR/BISECT_RUN\"\n \n       if [ $res -ne 0 ]; then\n \t  echo >&2 \"bisect run failed:\"\n-\t  echo >&2 \"$next_bisect exited with error code $res\"\n+\t  echo >&2 \"'bisect_state $state' exited with error code $res\"\n \t  exit $res\n       fi\n \n@@ -444,12 +428,8 @@ case \"$#\" in\n     case \"$cmd\" in\n     start)\n         bisect_start \"$@\" ;;\n-    bad)\n-        bisect_bad \"$@\" ;;\n-    good)\n-        bisect_good \"$@\" ;;\n-    skip)\n-        bisect_skip \"$@\" ;;\n+    bad|good|skip)\n+        bisect_state \"$cmd\" \"$@\" ;;\n     next)\n         # Not sure we want \"next\" at the UI level anymore.\n         bisect_next \"$@\" ;;\n-- \n1.5.3.4.215.g187cf\n"}]}