(List (= scope= flags=0 words=[] bindings=[('USAGE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[SQ [...]] [--] [...]\n"> ]\n"> a known-bad revision.\n"> ...]\n"> ... known-good revisions.\n"> |)...]\n"> ... untestable revisions.\n"> ]\n"> \n"> ...\n"> ... to automatically bisect.\n"> ]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]} ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-i18n]} ) (= scope= flags=0 words=[] bindings=[('_x40', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('_x40', {[DQ [VarSub _x40][VarSub _x40][VarSub _x40][VarSub _x40][VarSub _x40][VarSub _x40][VarSub _x40][VarSub _x40]]})]) (FunctionDef bisect_head [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_HEAD]]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS BISECT_HEAD]} ) (ElseTrue) (Com {[LIT_CHARS echo]} {[LIT_CHARS HEAD]} ) ) ) (FunctionDef bisect_autostart [] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} ) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "You need to start by "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect start"][\ LIT_ESCAPED_CHAR "\\\""]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -t]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Do you want me to do it for you [Y/n]? "]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS read]} {[LIT_CHARS yesno]} ) (Case to_match={[DQ [VarSub yesno]]}, pat_word_list=[[{[LIT_DBRACKET_LIKE "["] [LIT_CHARS Nn] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS exit]} ) ) (Com {[LIT_CHARS bisect_start]} ) ) (ElseTrue) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (FunctionDef bisect_start [] (List (= scope= flags=0 words=[] bindings=[('has_double_dash', {[LIT_CHARS 0]})]) (For arg do_arg_iter) (Case to_match={[DQ [VarSub arg]]}, pat_word_list=[[{[LIT_CHARS --]}]] (List (= scope= flags=0 words=[] bindings=[('has_double_dash', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS break]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('orig_args', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub @]]})]})]) (= scope= flags=0 words=[] bindings=[('bad_seen', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('eval', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS z][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --is-bare-repository]})]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS zfalse]} ) (= scope= flags=0 words=[] bindings=[('mode', {[LIT_CHARS --no-checkout]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('mode', {[SQ ]})]) ) (While (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('arg', {[DQ [VarSub 1]]})]) (Case to_match={[DQ [VarSub arg]]}, pat_word_list=[[{[LIT_CHARS --]}], [{[LIT_CHARS --no-checkout]}], [{[LIT_CHARS --] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (List (= scope= flags=0 words=[] bindings=[('mode', {[LIT_CHARS --no-checkout]})]) (Com {[LIT_CHARS shift]} ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "unrecognised option: '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "arg'"]]})]]} ) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub arg][LIT_CHARS "^{commit}"]]})]})]) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub has_double_dash]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "arg' does not appear to be a valid revision"]]})]]} ) ) (Com {[LIT_CHARS break]} ) ) ) (Case to_match={[VarSub bad_seen]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('state', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('bad_seen', {[LIT_CHARS 1]})]) ) (= scope= flags=0 words=[] bindings=[('state', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('eval', {[DQ [VarSub eval][LIT_CHARS " bisect_write '"][VarSub state][LIT_CHARS "' '"][VarSub rev][LIT_CHARS "' 'nolog' &&"]]})]) (Com {[LIT_CHARS shift]} ) ) ) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com more_env=[('GIT_DIR', {[DQ [VarSub GIT_DIR]]})] {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[LIT_CHARS HEAD]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com more_env=[('GIT_DIR', {[DQ [VarSub GIT_DIR]]})] {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Bad HEAD - I need a HEAD"]]})]]} ) ) ) (= scope= flags=0 words=[] bindings=[('start_head', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} ) (List (= scope= flags=0 words=[] bindings=[('start_head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]})]})]) (If (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS z][VarSub mode]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS z--no-checkout]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub start_head]]} {[LIT_CHARS --]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Checking out '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "start_head' failed. Try 'git bisect reset '."]]})]]} ) ) ) ) (ElseTrue) (Case to_match={[DQ [VarSub head]]}, pat_word_list=[[{[LIT_CHARS refs/heads/] [LIT_OTHER "*"]}, {[VarSub _x40]}], [{[LIT_OTHER "*"]}]] (List (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /head-name]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "won't bisect on seeked tree"]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('start_head', {[DQ [VarSub head transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS heads] [LIT_SLASH /]}]]]})]) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Bad HEAD - strange symbolic ref"]]})]]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bisect_clean_state]} ) (Com {[LIT_CHARS exit]} ) ) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} {[LIT_CHARS 3]} {[LIT_CHARS 15]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub start_head]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} "> 1), > ) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS z][VarSub mode]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS z--no-checkout]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS --no-deref]} {[LIT_CHARS BISECT_HEAD]} {[DQ [VarSub start_head]]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_NAMES]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS eval]} {[DQ [VarSub eval][LIT_CHARS " true"]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "git bisect start"][VarSub orig_args]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} >"> 1), > ) (Com {[LIT_CHARS exit]} ) ) ) ) ) ) (Com {[LIT_CHARS bisect_auto_next]} ) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS 0]} ) ) ) (FunctionDef bisect_write [] (List (= scope= flags=0 words=[] bindings=[('state', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('rev', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('nolog', {[DQ [VarSub 3]]})]) (Case to_match={[DQ [VarSub state]]}, pat_word_list=[[{[LIT_CHARS bad]}], [{[LIT_CHARS good]}, {[LIT_CHARS skip]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('tag', {[DQ [VarSub state]]})]) (= scope= flags=0 words=[] bindings=[('tag', {[DQ [VarSub state]] [LIT_CHARS -] [DQ [VarSub rev]]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Bad bisect_write argument: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS state]]})]]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[DQ [LIT_CHARS refs/bisect/][VarSub tag]]} {[DQ [VarSub rev]]} ) (Com {[LIT_CHARS exit]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# "][VarSub state][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS show-branch]} {[VarSub rev]})]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} >"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub nolog]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "git bisect "][VarSub state][LIT_CHARS " "][VarSub rev]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} >"> 1), > ) ) ) ) (FunctionDef is_expected_rev [] (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_EXPECTED_REV]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_EXPECTED_REV]]})]} ) ) ) (FunctionDef check_expected_revs [] (For _rev [{[DQ [VarSub @]]}]) (If (Pipeline! (Com {[LIT_CHARS is_expected_rev]} {[DQ [VarSub _rev]]} ) ) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_ANCESTORS_OK]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_EXPECTED_REV]]} ) (Com {[LIT_CHARS return]} ) ) ) ) ) (FunctionDef bisect_skip [] (List (= scope= flags=0 words=[] bindings=[('all', {[SQ ]})]) (For arg [{[DQ [VarSub @]]}]) (List (Case to_match={[DQ [VarSub arg]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS ..] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('revs', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[DQ [VarSub arg]]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Bad rev input: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS arg]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('revs', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub arg]]})]})]) ) (= scope= flags=0 words=[] bindings=[('all', {[DQ [VarSub all][LIT_CHARS " "][VarSub revs]]})]) ) ) (Com {[LIT_CHARS eval]} {[LIT_CHARS bisect_state]} {[SQ ]} {[VarSub all]} ) ) ) (FunctionDef bisect_state [] (List (Com {[LIT_CHARS bisect_autostart]} ) (= scope= flags=0 words=[] bindings=[('state', {[VarSub 1]})]) (Case to_match={[DQ [VarSub #][LIT_CHARS ","][VarSub state]]}, pat_word_list=[[{[LIT_CHARS 0] [LIT_COMMA ","] [LIT_OTHER "*"]}], [{[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS bad]}, {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS good]}, {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS skip]}], [{[LIT_CHARS 2] [LIT_COMMA ","] [LIT_CHARS bad]}, {[LIT_OTHER "*"] [LIT_COMMA ","] [LIT_CHARS good]}, {[LIT_OTHER "*"] [LIT_COMMA ","] [LIT_CHARS skip]}], [{[LIT_OTHER "*"] [LIT_COMMA ","] [LIT_CHARS bad]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Please call 'bisect_state' with at least one argument."]]})]]} ) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[ComSub (Com {[LIT_CHARS bisect_head]})]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Bad rev input: "][ComSub (Com {[LIT_CHARS bisect_head]})]]})]]} ) ) (Com {[LIT_CHARS bisect_write]} {[DQ [VarSub state]]} {[DQ [VarSub rev]]} ) (Com {[LIT_CHARS check_expected_revs]} {[DQ [VarSub rev]]} ) ) (List (Com {[LIT_CHARS shift]} ) (= scope= flags=0 words=[] bindings=[('eval', {[SQ ]})]) (For rev [{[DQ [VarSub @]]}]) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('sha', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub rev][LIT_CHARS "^{commit}"]]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Bad rev input: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rev]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('eval', {[DQ [VarSub eval][LIT_CHARS " bisect_write '"][VarSub state][LIT_CHARS "' '"][VarSub sha][LIT_CHARS "'; "]]})]) ) ) (Com {[LIT_CHARS eval]} {[DQ [VarSub eval]]} ) (Com {[LIT_CHARS check_expected_revs]} {[DQ [VarSub @]]} ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "'git bisect bad' can take only one argument."]]})]]} ) (Com {[LIT_CHARS usage]} ) ) (Com {[LIT_CHARS bisect_auto_next]} ) ) ) (FunctionDef bisect_next_check [] (List (= scope= flags=0 words=[] bindings=[('missing_good', {[SQ ]}), ('missing_bad', {[SQ ]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[LIT_CHARS refs/bisect/bad]} ) (= scope= flags=0 words=[] bindings=[('missing_bad', {[LIT_CHARS t]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS for-each-ref]} {[DQ [LIT_CHARS "refs/bisect/good-*"]]})]]} ) (= scope= flags=0 words=[] bindings=[('missing_good', {[LIT_CHARS t]})]) ) (Case to_match={[DQ [VarSub missing_good][LIT_CHARS ","][VarSub missing_bad][LIT_CHARS ","][VarSub 1]]}, pat_word_list=[[{[LIT_COMMA ","] [LIT_COMMA ","] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"] [LIT_COMMA ","]}], [{[LIT_CHARS t] [LIT_COMMA ","] [LIT_COMMA ","] [LIT_CHARS good]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_OTHER ":"]} {[LIT_CHARS have]} {[LIT_CHARS both]} {[LIT_CHARS good]} {[LIT_CHARS and]} {[LIT_CHARS bad]} {[LIT_CHARS -]} {[LIT_CHARS ok]} ) (Com {[LIT_CHARS false]} ) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Warning: bisecting only with a bad commit."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -t]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Are you sure [Y/n]? "]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS read]} {[LIT_CHARS yesno]} ) (Case to_match={[DQ [VarSub yesno]]}, pat_word_list=[[{[LIT_DBRACKET_LIKE "["] [LIT_CHARS Nn] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (Com {[LIT_OTHER ":"]} {[LIT_CHARS bisect]} {[LIT_CHARS without]} {[LIT_CHARS good...]} ) ) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "You need to give me at least one good and one bad revisions.\n"][LIT_CHARS "(You can use "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect bad"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " and "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect good"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " for that.)"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (ElseTrue) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "You need to start by "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect start"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ".\n"][LIT_CHARS "You then need to give me at least one good and one bad revisions.\n"][LIT_CHARS "(You can use "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect bad"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " and "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git bisect good"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " for that.)"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (FunctionDef bisect_auto_next [] (AndOr OP_AND_IF (Com {[LIT_CHARS bisect_next_check]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS bisect_next]} ) (Com {[LIT_OTHER ":"]} ) ) ) ) (FunctionDef bisect_next [] (List (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS usage]} ) ) (Com {[LIT_CHARS bisect_autostart]} ) (Com {[LIT_CHARS bisect_next_check]} {[LIT_CHARS good]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS bisect--helper]} {[LIT_CHARS --next-all]} {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_HEAD]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS --no-checkout]}) )]} ) (= scope= flags=0 words=[] bindings=[('res', {[VarSub ?]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub res]} {[LIT_CHARS -eq]} {[LIT_CHARS 10]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub res]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS exit]} {[VarSub res]} ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (FunctionDef bisect_visualize [] (List (Com {[LIT_CHARS bisect_next_check]} {[LIT_CHARS fail]} ) (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub DISPLAY test_op=VS_TEST_PLUS {[LIT_CHARS set]}][VarSub SESSIONNAME test_op=VS_TEST_PLUS {[LIT_CHARS set]}][VarSub MSYSTEM test_op=VS_TEST_PLUS {[LIT_CHARS set]}][VarSub SECURITYSESSIONID test_op=VS_TEST_PLUS {[LIT_CHARS set]}]]} ) (Com {[LIT_CHARS type]} {[LIT_CHARS gitk]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (Com {[LIT_CHARS set]} {[LIT_CHARS gitk]} ) (ElseTrue) (Com {[LIT_CHARS set]} {[LIT_CHARS git]} {[LIT_CHARS log]} ) ) (ElseTrue) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS git] [LIT_OTHER "*"]}, {[LIT_CHARS tig]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS set]} {[LIT_CHARS git]} {[LIT_CHARS log]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS git]} {[DQ [VarSub @]]} ) ) ) (Com {[LIT_CHARS eval]} {[SQ ]} {[LIT_CHARS --bisect]} {[LIT_CHARS --]} {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_NAMES]]})]} ) ) ) (FunctionDef bisect_reset [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} ) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "We are not bisecting."]]} ) (Com {[LIT_CHARS return]} ) ) ) (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_CHARS 1]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('branch', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]})]})]) (List (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --quiet]} {[LIT_CHARS --verify]} {[DQ [VarSub 1][LIT_CHARS "^{commit}"]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (List (= scope= flags=0 words=[] bindings=[('invalid', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "invalid' is not a valid commit"]]})]]} ) ) ) (= scope= flags=0 words=[] bindings=[('branch', {[DQ [VarSub 1]]})]) ) (Com {[LIT_CHARS usage]} ) ) (If (AndOr OP_AND_IF (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_HEAD]]} ) ) (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub branch]]} {[LIT_CHARS --]} ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not check out original HEAD '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch'.\n"][LIT_CHARS "Try 'git bisect reset '."]]})]]} ) ) (Com {[LIT_CHARS bisect_clean_state]} ) ) ) (FunctionDef bisect_clean_state [] (List (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS for-each-ref]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [SQ ]} {[LIT_CHARS refs/bisect/] [\ LIT_ESCAPED_CHAR "\\*"]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS ref]} {[LIT_CHARS hash]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -d]} {[VarSub ref]} {[VarSub hash]} ) (Com {[LIT_CHARS exit]} ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_EXPECTED_REV]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_ANCESTORS_OK]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_NAMES]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_RUN]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /head-name]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -d]} {[LIT_CHARS --no-deref]} {[LIT_CHARS BISECT_HEAD]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_START]]} ) ) ) ) ) ) ) ) ) ) (FunctionDef bisect_replay [] (List (= scope= flags=0 words=[] bindings=[('file', {[DQ [VarSub 1]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No logfile given"]]})]]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -r]} {[DQ [VarSub file]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "cannot read "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "file for replaying"]]})]]} ) ) (Com {[LIT_CHARS bisect_reset]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS git]} {[LIT_CHARS bisect]} {[LIT_CHARS command]} {[LIT_CHARS rev]} ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub git][LIT_CHARS " "][VarSub bisect]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS "git bisect"]]} {[LIT_CHARS -o]} {[DQ [VarSub git]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS git-bisect]]} ) (Com {[LIT_CHARS continue]} ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub git]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS git-bisect]]} ) (List (= scope= flags=0 words=[] bindings=[('rev', {[DQ [VarSub command]]})]) (= scope= flags=0 words=[] bindings=[('command', {[DQ [VarSub bisect]]})]) ) ) (Case to_match={[DQ [VarSub command]]}, pat_word_list=[[{[LIT_CHARS start]}], [{[LIT_CHARS good]}, {[LIT_CHARS bad]}, {[LIT_CHARS skip]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [LIT_CHARS "bisect_start "][VarSub rev]]})]) (Com {[LIT_CHARS eval]} {[DQ [VarSub cmd]]} ) ) (Com {[LIT_CHARS bisect_write]} {[DQ [VarSub command]]} {[DQ [VarSub rev]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "?? what are you talking about?"]]})]]} ) ) ) ) (Com {[LIT_CHARS bisect_auto_next]} ) ) ) (FunctionDef bisect_run [] (List (Com {[LIT_CHARS bisect_next_check]} {[LIT_CHARS fail]} ) (While (Com {[LIT_CHARS true]} ) (List (= scope= flags=0 words=[] bindings=[('command', {[DQ [VarSub @]]})]) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "running "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS command]]} ) (Com {[DQ [VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('res', {[VarSub ?]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub res]} {[LIT_CHARS -lt]} {[LIT_CHARS 0]} {[LIT_CHARS -o]} {[VarSub res]} {[LIT_CHARS -ge]} {[LIT_CHARS 128]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "bisect run failed:\n"][LIT_CHARS "exit code "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "res from '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "command' is < 0 or >= 128"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub res]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub res]} {[LIT_CHARS -eq]} {[LIT_CHARS 125]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('state', {[SQ ]})]) (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub res]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('state', {[SQ ]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('state', {[SQ ]})]) ) (Subshell (Com {[LIT_CHARS bisect_state]} {[VarSub state]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_RUN]]} "> 1), > ) ) (= scope= flags=0 words=[] bindings=[('res', {[VarSub ?]})]) (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_RUN]]} ) (If (Com {[LIT_CHARS sane_grep]} {[DQ [LIT_CHARS "first bad commit could be any of"]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_RUN]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "bisect run cannot continue any more"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub res]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub res]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "bisect run failed:\n"][LIT_CHARS "'bisect_state "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "state' exited with error code "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS res]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub res]} ) ) ) (If (Com {[LIT_CHARS sane_grep]} {[DQ [LIT_CHARS "is the first bad commit"]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_RUN]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "bisect run success"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) ) ) ) ) (FunctionDef bisect_log [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "We are not bisecting."]]})]]} ) ) (Com {[LIT_CHARS cat]} {[DQ [VarSub GIT_DIR][LIT_CHARS /BISECT_LOG]]} ) ) ) (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS usage]} ) (List (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) (Case to_match={[DQ [VarSub cmd]]}, pat_word_list=[[{[LIT_CHARS help]}], [{[LIT_CHARS start]}], [{[LIT_CHARS bad]}, {[LIT_CHARS good]}], [{[LIT_CHARS skip]}], [{[LIT_CHARS next]}], [{[LIT_CHARS visualize]}, {[LIT_CHARS view]}], [{[LIT_CHARS reset]}], [{[LIT_CHARS replay]}], [{[LIT_CHARS log]}], [{[LIT_CHARS run]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS git]} {[LIT_CHARS bisect]} {[LIT_CHARS -h]} ) (Com {[LIT_CHARS bisect_start]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_state]} {[DQ [VarSub cmd]]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_skip]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_next]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_visualize]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_reset]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_replay]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS bisect_log]} ) (Com {[LIT_CHARS bisect_run]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS usage]} ) ) ) ) )