(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:USAGE spids:[12]) op: Equal rhs: {(SQ <'[help|start|bad|good|new|old|terms|skip|next|reset|visualize|replay|log|run]'>)} spids: [12] ) ] spids: [12] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LONG_USAGE spids:[17]) op: Equal rhs: { (SQ <'git bisect help\n'> <'\tprint this long help message.\n'> <'git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]\n'> <'\t\t [--no-checkout] [<bad> [<good>...]] [--] [<pathspec>...]\n'> <'\treset bisect state and start bisection.\n'> <'git bisect (bad|new) [<rev>]\n'> <'\tmark <rev> a known-bad revision/\n'> <'\t\ta revision after change in a given property.\n'> <'git bisect (good|old) [<rev>...]\n'> <'\tmark <rev>... known-good revisions/\n'> <'\t\trevisions before change in a given property.\n'> <'git bisect terms [--term-good | --term-bad]\n'> <'\tshow the terms used for old and new commits (default: bad, good)\n'> <'git bisect skip [(<rev>|<range>)...]\n'> <'\tmark <rev>... untestable revisions.\n'> <'git bisect next\n'> <'\tfind next bisection to test and check it out.\n'> <'git bisect reset [<commit>]\n'> <'\tfinish bisection search and go back to commit.\n'> <'git bisect visualize\n'> <'\tshow bisect status in gitk.\n'> <'git bisect replay <logfile>\n'> <'\treplay bisection log.\n'> <'git bisect log\n'> <'\tshow bisect log.\n'> <'git bisect run <cmd>...\n'> <'\tuse <cmd>... to automatically bisect.\n'> <'\n'> <'Please use "git help bisect" to get the full man page.'> ) } spids: [17] ) ] spids: [17] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OPTIONS_SPEC spids:[51]) op: Equal rhs: (word.EmptyWord) spids: [51] ) ] spids: [51] ) (C {(.)} {(git-sh-setup)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_x40 spids:[58]) op: Equal rhs: {(SQ <'[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'>)} spids: [58] ) ] spids: [58] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_x40 spids:[63]) op: Equal rhs: { (DQ ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ) } spids: [63] ) ] spids: [63] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_BAD spids:[75]) op: Equal rhs: {(bad)} spids: [75] ) ] spids: [75] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_GOOD spids:[78]) op: Equal rhs: {(good)} spids: [78] ) ] spids: [78] ) (command.FuncDef name: bisect_head body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_HEAD))})] action: [(C {(echo)} {(BISECT_HEAD)})] spids: [16777215 101] ) ] else_action: [(C {(echo)} {(HEAD)})] spids: [109 117] ) ] spids: [86] ) spids: [82 85] ) (command.FuncDef name: bisect_autostart body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))}) (command.BraceGroup children: [ (command.SimpleCommand words: [ {(gettextln)} { (DQ ('You need to start by ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('git bisect start') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-t)} {(0)})] action: [ (command.SimpleCommand words: [{(gettext)} {(DQ ('Do you want me to do it for you [Y/n]? '))}] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (C {(read)} {(yesno)}) (command.Case to_match: {(DQ ($ VSub_Name '$yesno'))} arms: [ (case_arm pat_list: [{(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '*')}] action: [(command.ControlFlow token:<ControlFlow_Exit exit>)] spids: [204 208 213 16777215] ) ] spids: [195 201 216] ) (C {(bisect_start)}) ] spids: [16777215 165] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] spids: [222 230] ) ] spids: [140] ) ] ) ] spids: [126] ) spids: [122 125] ) (command.FuncDef name: bisect_start body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:has_double_dash spids:[257]) op: Equal rhs: {(0)} spids: [257] ) ] spids: [257] ) (command.ForEach iter_name: arg do_arg_iter: T body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Name '$arg'))} arms: [ (case_arm pat_list: [{(--)}] action: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:has_double_dash spids:[280]) op: Equal rhs: {(1)} spids: [280] ) ] spids: [280] ) terminator: <Op_Semi ';'> ) (command.ControlFlow token: <ControlFlow_Break break> ) ] spids: [277 278 286 16777215] ) ] spids: [269 275 288] ) ] spids: [266 291] ) spids: [16777215 16777215] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:orig_args spids:[294]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--sq-quote)} {(DQ ($ VSub_At '$@'))})] ) left_token: <Left_CommandSub '$('> spids: [295 305] ) } spids: [294] ) ] spids: [294] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bad_seen spids:[308]) op: Equal rhs: {(0)} spids: [308] ) ] spids: [308] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:eval spids:[312]) op: Equal rhs: {(SQ )} spids: [312] ) ] spids: [312] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[317]) op: Equal rhs: {(0)} spids: [317] ) ] spids: [317] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:revs spids:[321]) op: Equal rhs: {(SQ )} spids: [321] ) ] spids: [321] ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ (z) (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--is-bare-repository)})] ) left_token: <Left_CommandSub '$('> spids: [332 338] ) ) } {(KW_Bang '!') (Lit_Other '=')} {(zfalse)} ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:mode spids:[350]) op: Equal rhs: {(--no-checkout)} spids: [350] ) ] spids: [350] ) ] spids: [16777215 347] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:mode spids:[357]) op: Equal rhs: {(SQ )} spids: [357] ) ] spids: [357] ) ] spids: [354 362] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:arg spids:[381]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [381] ) ] spids: [381] ) (command.Case to_match: {(DQ ($ VSub_Name '$arg'))} arms: [ (case_arm pat_list: [{(--)}] action: [(C {(shift)}) (command.ControlFlow token:<ControlFlow_Break break>)] spids: [396 397 406 16777215] ) (case_arm pat_list: [{(--no-checkout)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:mode spids:[413]) op: Equal rhs: {(--no-checkout)} spids: [413] ) ] spids: [413] ) (C {(shift)}) ] spids: [409 410 419 16777215] ) (case_arm pat_list: [{(--term-good)} {(--term-old)}] action: [ (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[431]) op: Equal rhs: {(1)} spids: [431] ) ] spids: [431] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_GOOD spids:[435]) op: Equal rhs: {($ VSub_Number '$1')} spids: [435] ) ] spids: [435] ) (C {(shift)}) ] spids: [422 425 441 16777215] ) (case_arm pat_list: [ {(--term-good) (Lit_Other '=') (Lit_Other '*')} {(--term-old) (Lit_Other '=') (Lit_Other '*')} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[454]) op: Equal rhs: {(1)} spids: [454] ) ] spids: [454] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_GOOD spids:[458]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id: VOp1_Pound arg_word: {('*=')} ) spids: [459 463] ) } spids: [458] ) ] spids: [458] ) (C {(shift)}) ] spids: [444 451 468 16777215] ) (case_arm pat_list: [{(--term-bad)} {(--term-new)}] action: [ (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[480]) op: Equal rhs: {(1)} spids: [480] ) ] spids: [480] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_BAD spids:[484]) op: Equal rhs: {($ VSub_Number '$1')} spids: [484] ) ] spids: [484] ) (C {(shift)}) ] spids: [471 474 490 16777215] ) (case_arm pat_list: [ {(--term-bad) (Lit_Other '=') (Lit_Other '*')} {(--term-new) (Lit_Other '=') (Lit_Other '*')} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[503]) op: Equal rhs: {(1)} spids: [503] ) ] spids: [503] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_BAD spids:[507]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id: VOp1_Pound arg_word: {('*=')} ) spids: [508 512] ) } spids: [507] ) ] spids: [507] ) (C {(shift)}) ] spids: [493 500 517 16777215] ) (case_arm pat_list: [{(--) (Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("unrecognised option: '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("arg'") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [528 536] ) ) } ) ] spids: [520 522 539 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:rev spids:[546]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(-q)} {(--verify)} {(DQ ($ VSub_Name '$arg') ('^{commit}'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [547 560] ) } spids: [546] ) ] spids: [546] ) (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$has_double_dash')} {(-eq)} {(1)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("arg' does not appear to be a valid revision") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [581 589] ) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] spids: [564] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:revs spids:[599]) op: Equal rhs: {(DQ ($ VSub_Name '$revs') (' ') ($ VSub_Name '$rev'))} spids: [599] ) ] spids: [599] ) (C {(shift)}) ] spids: [542 543 610 16777215] ) ] spids: [387 393 613] ) ] spids: [378 616] ) ) (command.ForEach iter_name: rev iter_words: [{($ VSub_Name '$revs')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:must_write_terms spids:[652]) op: Equal rhs: {(1)} spids: [652] ) ] spids: [652] ) (command.Case to_match: {($ VSub_Name '$bad_seen')} arms: [ (case_arm pat_list: [{(0)}] action: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[667]) op: Equal rhs: {($ VSub_Name '$TERM_BAD')} spids: [667] ) ] spids: [667] ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bad_seen spids:[672]) op: Equal rhs: {(1)} spids: [672] ) ] spids: [672] ) ] spids: [664 665 675 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[681]) op: Equal rhs: {($ VSub_Name '$TERM_GOOD')} spids: [681] ) ] spids: [681] ) ] spids: [678 679 684 16777215] ) ] spids: [657 661 687] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:eval spids:[690]) op: Equal rhs: { (DQ ($ VSub_Name '$eval') (" bisect_write '") ($ VSub_Name '$state') ("' '") ($ VSub_Name '$rev') ("' 'nolog' &&") ) } spids: [690] ) ] spids: [690] ) ] spids: [629 701] ) spids: [625 16777215] ) (command.AndOr ops: [Op_DPipe Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:head spids:[716]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [{(git)} {(symbolic-ref)} {(-q)} {(HEAD)}] more_env: [ (env_pair name: GIT_DIR val: {(DQ ($ VSub_Name '$GIT_DIR'))} spids: [718] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [717 730] ) } spids: [716] ) ] spids: [716] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:head spids:[735]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}] more_env: [ (env_pair name: GIT_DIR val: {(DQ ($ VSub_Name '$GIT_DIR'))} spids: [737] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [736 749] ) } spids: [735] ) ] spids: [735] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Bad HEAD - I need a HEAD'))})] ) left_token: <Left_CommandSub '$('> spids: [757 763] ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:start_head spids:[780]) op: Equal rhs: {(SQ )} spids: [780] ) ] spids: [780] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:start_head spids:[804]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))}) ] ) left_token: <Left_CommandSub '$('> spids: [805 812] ) } spids: [804] ) ] spids: [804] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ (z) ($ VSub_Name '$mode'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (z--no-checkout))} ) ] action: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(checkout)} {(DQ ($ VSub_Name '$start_head'))} {(--)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("Checking out '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("start_head' failed. Try 'git bisect reset <valid-branch>'.") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [851 859] ) ) } ) ] ) ] spids: [16777215 832] ) ] spids: [16777215 863] ) ] spids: [16777215 797] ) ] else_action: [ (command.Case to_match: {(DQ ($ VSub_Name '$head'))} arms: [ (case_arm pat_list: [{(refs/heads/) (Lit_Other '*')} {($ VSub_Name '$_x40')}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/head-name))} {(Lit_Other ']')} ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ("won't bisect on cg-seek'ed tree"))}) ] ) left_token: <Left_CommandSub '$('> spids: [918 924] ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:start_head spids:[928]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name head> suffix_op: (suffix_op.StringUnary op_id: VOp1_Pound arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)} ) spids: [930 937] ) ) } spids: [928] ) ] spids: [928] ) ] spids: [882 886 941 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Bad HEAD - strange symbolic ref'))}) ] ) left_token: <Left_CommandSub '$('> spids: [951 957] ) ) } ) ] spids: [944 945 961 16777215] ) ] spids: [873 879 964] ) ] spids: [866 967] ) (command.AndOr ops: [Op_DPipe] children: [(C {(bisect_clean_state)}) (command.ControlFlow token:<ControlFlow_Exit exit>)] ) (C {(trap)} {(SQ <bisect_clean_state>)} {(0)}) (C {(trap)} {(SQ <'exit 255'>)} {(1)} {(2)} {(3)} {(15)}) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DPipe] children: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$start_head'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))} ) ] ) (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ (z) ($ VSub_Name '$mode'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (z--no-checkout))} ) (C {(git)} {(update-ref)} {(--no-deref)} {(BISECT_HEAD)} {(DQ ($ VSub_Name '$start_head'))} ) ] ) ] spids: [1070] ) (command.SimpleCommand words: [{(git)} {(rev-parse)} {(--sq-quote)} {(DQ ($ VSub_At '$@'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_NAMES))} ) ] ) (C {(eval)} {(DQ ($ VSub_Name '$eval') (' true'))}) (command.If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Name '$must_write_terms')} {(-eq)} {(1)})] action: [ (C {(write_terms)} {(DQ ($ VSub_Name '$TERM_BAD'))} {(DQ ($ VSub_Name '$TERM_GOOD'))} ) ] spids: [16777215 1148] ) ] spids: [16777215 1162] ) (command.SimpleCommand words: [{(echo)} {(DQ ('git bisect start') ($ VSub_Name '$orig_args'))}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) (command.ControlFlow token:<ControlFlow_Exit exit>) ] ) (C {(bisect_auto_next)}) (C {(trap)} {(SQ <->)} {(0)}) ] spids: [242] ) spids: [238 241] ) (command.FuncDef name: bisect_write body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[1219]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1219] ) ] spids: [1219] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:rev spids:[1225]) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1225] ) ] spids: [1225] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:nolog spids:[1231]) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [1231] ) ] spids: [1231] ) (command.Case to_match: {(DQ ($ VSub_Name '$state'))} arms: [ (case_arm pat_list: [{(DQ ($ VSub_Name '$TERM_BAD'))}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:tag spids:[1252]) op: Equal rhs: {(DQ ($ VSub_Name '$state'))} spids: [1252] ) ] spids: [1252] ) ] spids: [1246 1249 1257 16777215] ) (case_arm pat_list: [{(DQ ($ VSub_Name '$TERM_GOOD'))} {(skip)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:tag spids:[1268]) op: Equal rhs: {(DQ ($ VSub_Name '$state')) (-) (DQ ($ VSub_Name '$rev'))} spids: [1268] ) ] spids: [1268] ) ] spids: [1260 1265 1277 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Bad bisect_write argument: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (state) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1287 1295] ) ) } ) ] spids: [1280 1281 1298 16777215] ) ] spids: [1237 1243 1301] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(update-ref)} {(DQ (refs/bisect/) ($ VSub_Name '$tag'))} {(DQ ($ VSub_Name '$rev'))} ) (command.ControlFlow token:<ControlFlow_Exit exit>) ] ) (command.SimpleCommand words: [ {(echo)} { (DQ ('# ') ($ VSub_Name '$state') (': ') (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(show-branch)} {($ VSub_Name '$rev')})] ) left_token: <Left_CommandSub '$('> spids: [1328 1334] ) ) } ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$nolog'))}) (command.SimpleCommand words: [ {(echo)} {(DQ ('git bisect ') ($ VSub_Name '$state') (' ') ($ VSub_Name '$rev'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) ] ) ] spids: [1216] ) spids: [1212 1215] ) (command.FuncDef name: is_expected_rev body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_EXPECTED_REV))}) (C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_EXPECTED_REV))})] ) left_token: <Left_CommandSub '$('> spids: [1399 1406] ) } ) ] ) ] spids: [1376] ) spids: [1372 1375] ) (command.FuncDef name: check_expected_revs body: (command.BraceGroup children: [ (command.ForEach iter_name: _rev iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [(C {(is_expected_rev)} {(DQ ($ VSub_Name '$_rev'))})] negated: T ) ] action: [ (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_ANCESTORS_OK))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_EXPECTED_REV))}) (command.ControlFlow token: <ControlFlow_Return return> ) ] spids: [16777215 1443] ) ] spids: [16777215 1469] ) ] spids: [1429 1472] ) spids: [1423 1427] ) ] spids: [1415] ) spids: [1411 1414] ) (command.FuncDef name: bisect_skip body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:all spids:[1484]) op: Equal rhs: {(SQ )} spids: [1484] ) ] spids: [1484] ) (command.ForEach iter_name: arg iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Name '$arg'))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (..) (Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:revs spids:[1518]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-list)} {(DQ ($ VSub_Name '$arg'))}) ] ) left_token: <Left_CommandSub '$('> spids: [1519 1527] ) } spids: [1518] ) ] spids: [1518] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Bad rev input: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (arg) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1534 1542] ) ) } ) ] ) ] spids: [1512 1515 1545 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:revs spids:[1552]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--sq-quote)} {(DQ ($ VSub_Name '$arg'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1553 1563] ) } spids: [1552] ) ] spids: [1552] ) ] spids: [1548 1549 1565 16777215] ) ] spids: [1503 1509 1568] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:all spids:[1571]) op: Equal rhs: {(DQ ($ VSub_Name '$all') (' ') ($ VSub_Name '$revs'))} spids: [1571] ) ] spids: [1571] ) ] spids: [1500 1579] ) spids: [1494 16777215] ) (C {(eval)} {(bisect_state)} {(SQ <skip>)} {($ VSub_Name '$all')}) ] spids: [1481] ) spids: [1477 1480] ) (command.FuncDef name: bisect_state body: (command.BraceGroup children: [ (C {(bisect_autostart)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[1605]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1605] ) ] spids: [1605] ) (C {(check_and_set_terms)} {($ VSub_Name '$state')}) (command.Case to_match: {(DQ ($ VSub_Pound '$#') (',') ($ VSub_Name '$state'))} arms: [ (case_arm pat_list: [{(0) (Lit_Comma ',') (Lit_Other '*')}] action: [(C {(die)} {(DQ ("Please call 'bisect_state' with at least one argument."))})] spids: [1625 1628 1637 16777215] ) (case_arm pat_list: [ {(1) (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_BAD'))} {(1) (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_GOOD'))} {(1) (Lit_Comma ',') (skip)} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bisected_head spids:[1658]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(bisect_head)})]) left_token: <Left_CommandSub '$('> spids: [1659 1661] ) } spids: [1658] ) ] spids: [1658] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:rev spids:[1664]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Name '$bisected_head'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1665 1675] ) } spids: [1664] ) ] spids: [1664] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Bad rev input: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (bisected_head) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1683 1691] ) ) } ) ] ) (C {(bisect_write)} {(DQ ($ VSub_Name '$state'))} {(DQ ($ VSub_Name '$rev'))}) (C {(check_expected_revs)} {(DQ ($ VSub_Name '$rev'))}) ] spids: [1640 1655 1712 16777215] ) (case_arm pat_list: [ {(2) (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_BAD'))} {(Lit_Other '*') (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_GOOD'))} {(Lit_Other '*') (Lit_Comma ',') (skip)} ] action: [ (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:hash_list spids:[1736]) op: Equal rhs: {(SQ )} spids: [1736] ) ] spids: [1736] ) (command.ForEach iter_name: rev iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:sha spids:[1755]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Name '$rev') ('^{commit}'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1756 1767] ) } spids: [1755] ) ] spids: [1755] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Bad rev input: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (rev) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1775 1783] ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:hash_list spids:[1787]) op: Equal rhs: {(DQ ($ VSub_Name '$hash_list') (' ') ($ VSub_Name '$sha'))} spids: [1787] ) ] spids: [1787] ) ] spids: [1752 1795] ) spids: [1746 16777215] ) (command.ForEach iter_name: rev iter_words: [{($ VSub_Name '$hash_list')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(bisect_write)} {(DQ ($ VSub_Name '$state'))} {(DQ ($ VSub_Name '$rev'))}) ] spids: [1807 1821] ) spids: [1803 16777215] ) (C {(check_expected_revs)} {($ VSub_Name '$hash_list')}) ] spids: [1715 1730 1828 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_BAD'))}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'git bisect ") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("TERM_BAD' can take only one argument.") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1842 1850] ) ) } ) ] spids: [1831 1836 1853 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [1856 1857 1862 16777215] ) ] spids: [1614 1622 1865] ) (C {(bisect_auto_next)}) ] spids: [1599] ) spids: [1595 1598] ) (command.FuncDef name: bisect_next_check body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:missing_good spids:[1880]) op: Equal rhs: (word.EmptyWord) spids: [1880] ) (assign_pair lhs: (lhs_expr.LhsName name:missing_bad spids:[1882]) op: Equal rhs: (word.EmptyWord) spids: [1882] ) ] spids: [1880] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(show-ref)} {(-q)} {(--verify)} {(refs/bisect/) ($ VSub_Name '$TERM_BAD')}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:missing_bad spids:[1898]) op: Equal rhs: {(t)} spids: [1898] ) ] spids: [1898] ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(for-each-ref)} {(DQ (refs/bisect/) ($ VSub_Name '$TERM_GOOD') ('-*'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1907 1917] ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:missing_good spids:[1922]) op: Equal rhs: {(t)} spids: [1922] ) ] spids: [1922] ) ] ) (command.Case to_match: { (DQ ($ VSub_Name '$missing_good') (',') ($ VSub_Name '$missing_bad') (',') ($ VSub_Number '$1') ) } arms: [ (case_arm pat_list: [{(Lit_Comma ',') (Lit_Comma ',') (Lit_Other '*')}] action: [ (C {(Lit_Other ':')} {(have)} {(both)} {($ VSub_Name '$TERM_GOOD')} {(and)} {($ VSub_Name '$TERM_BAD')} {(-)} {(ok)} ) ] spids: [1940 1943 1963 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (Lit_Comma ',')}] action: [(C {(false)})] spids: [1966 1968 1978 16777215] ) (case_arm pat_list: [{(t) (Lit_Comma ',') (Lit_Comma ',') (DQ ($ VSub_Name '$TERM_GOOD'))}] action: [ (command.SimpleCommand words: [ {(eval_gettextln)} { (DQ ('Warning: bisecting only with a ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('TERM_BAD commit.') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-t)} {(0)})] action: [ (command.SimpleCommand words: [{(gettext)} {(DQ ('Are you sure [Y/n]? '))}] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (C {(read)} {(yesno)}) (command.Case to_match: {(DQ ($ VSub_Name '$yesno'))} arms: [ (case_arm pat_list: [{(Lit_Other '[') (Nn) (Lit_Other ']') (Lit_Other '*')}] action: [ (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [2057 2061 2067 16777215] ) ] spids: [2049 2055 2069] ) ] spids: [16777215 2019] ) ] spids: [16777215 2072] ) (C {(Lit_Other ':')} {(bisect)} {(without)} {($ VSub_Name '$TERM_GOOD') (...)}) ] spids: [1981 1987 2085 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bad_syn spids:[2092]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(bisect_voc)} {(bad)})] ) left_token: <Left_CommandSub '$('> spids: [2093 2097] ) } spids: [2092] ) ] spids: [2092] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:good_syn spids:[2100]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(bisect_voc)} {(good)})] ) left_token: <Left_CommandSub '$('> spids: [2101 2105] ) } spids: [2100] ) ] spids: [2100] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))})] action: [ (command.SimpleCommand words: [ {(eval_gettextln)} { (DQ ('You need to give me at least one ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('bad_syn and one ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('good_syn revision.\n') ('(You can use ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('git bisect ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (bad_syn) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' and ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('git bisect ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (good_syn) (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (' for that.)') ) } ] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) ] spids: [16777215 2120] ) ] else_action: [ (command.SimpleCommand words: [ {(eval_gettextln)} { (DQ ('You need to start by ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('git bisect start') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('.\n') ('You then need to give me at least one ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('good_syn and one ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('bad_syn revision.\n') ('(You can use ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('git bisect ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (bad_syn) (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (' and ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('git bisect ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (good_syn) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' for that.)') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [2151 2186] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [2088 2089 2193 16777215] ) ] spids: [1927 1937 2196] ) ] spids: [1877] ) spids: [1873 1876] ) (command.FuncDef name: bisect_auto_next body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp Op_DPipe] children: [(C {(bisect_next_check)}) (C {(bisect_next)}) (C {(Lit_Other ':')})] ) ] spids: [2205] ) spids: [2201 2204] ) (command.FuncDef name: bisect_next body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Pound '$#'))} arms: [ (case_arm pat_list:[{(0)}] spids:[2236 2237 2239 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [2241 2242 2246 16777215] ) ] spids: [2228 2234 2248] ) (C {(bisect_autostart)}) (C {(bisect_next_check)} {($ VSub_Name '$TERM_GOOD')}) (C {(git)} {(bisect--helper)} {(--next-all)} { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_HEAD))}) (C {(echo)} {(--no-checkout)}) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [2270 2285] ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[2288]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [2288] ) ] spids: [2288] ) (command.If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Name '$res')} {(-eq)} {(10)})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bad_rev spids:[2311]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(show-ref)} {(--hash)} {(--verify)} {(refs/bisect/) ($ VSub_Name '$TERM_BAD')} ) ] ) left_token: <Left_CommandSub '$('> spids: [2312 2323] ) } spids: [2311] ) ] spids: [2311] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:bad_commit spids:[2326]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(show-branch)} {($ VSub_Name '$bad_rev')})] ) left_token: <Left_CommandSub '$('> spids: [2327 2333] ) } spids: [2326] ) ] spids: [2326] ) (command.SimpleCommand words: [ {(echo)} { (DQ ('# first ') ($ VSub_Name '$TERM_BAD') (' commit: ') ($ VSub_Name '$bad_commit') ) } ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [16777215 2308] ) (if_arm cond: [(C {(test)} {($ VSub_Name '$res')} {(-eq)} {(2)})] action: [ (command.SimpleCommand words: [{(echo)} {(DQ ('# only skipped commits left to test'))}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:good_revs spids:[2384]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(for-each-ref)} {(--format) (Lit_Other '=') (DQ ('%(objectname)'))} {(DQ (refs/bisect/) ($ VSub_Name '$TERM_GOOD') ('-*'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2385 2401] ) } spids: [2384] ) ] spids: [2384] ) (command.ForEach iter_name: skipped iter_words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-list)} {(refs/bisect/) ($ VSub_Name '$TERM_BAD')} {(--not)} {($ VSub_Name '$good_revs')} ) ] ) left_token: <Left_CommandSub '$('> spids: [2410 2421] ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:skipped_commit spids:[2427]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(show-branch)} {($ VSub_Name '$skipped')}) ] ) left_token: <Left_CommandSub '$('> spids: [2428 2434] ) } spids: [2427] ) ] spids: [2427] ) (command.SimpleCommand words: [ {(echo)} { (DQ ('# possible first ') ($ VSub_Name '$TERM_BAD') (' commit: ') ($ VSub_Name '$skipped_commit') ) } ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))} ) ] ) ] spids: [2424 2453] ) spids: [2409 16777215] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_Name '$res')} ) ] spids: [2357 2368] ) ] spids: [16777215 2461] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$res')} {(-ne)} {(0)}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_Name '$res')} ) ] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2225] ) spids: [2221 2224] ) (command.FuncDef name: bisect_visualize body: (command.BraceGroup children: [ (C {(bisect_next_check)} {(fail)}) (command.If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(0)})] action: [ (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} { (DQ (word_part.BracedVarSub token: <VSub_Name DISPLAY> suffix_op: (suffix_op.StringUnary op_id: VTest_Plus arg_word: {(set)} ) spids: [2526 2530] ) (word_part.BracedVarSub token: <VSub_Name SESSIONNAME> suffix_op: (suffix_op.StringUnary op_id: VTest_Plus arg_word: {(set)} ) spids: [2531 2535] ) (word_part.BracedVarSub token: <VSub_Name MSYSTEM> suffix_op: (suffix_op.StringUnary op_id: VTest_Plus arg_word: {(set)} ) spids: [2536 2540] ) (word_part.BracedVarSub token: <VSub_Name SECURITYSESSIONID> suffix_op: (suffix_op.StringUnary op_id: VTest_Plus arg_word: {(set)} ) spids: [2541 2545] ) ) } ) (command.SimpleCommand words: [{(type)} {(gitk)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) ] ) ] action: [(C {(set)} {(gitk)})] spids: [16777215 2562] ) ] else_action: [(C {(set)} {(git)} {(log)})] spids: [2570 2580] ) ] spids: [16777215 2516] ) ] else_action: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(git) (Lit_Other '*')} {(tig)}] spids: [2595 2599 2601 16777215] ) (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [(C {(set)} {(git)} {(log)} {(DQ ($ VSub_At '$@'))})] spids: [2604 2606 2618 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(set)} {(git)} {(DQ ($ VSub_At '$@'))})] spids: [2621 2622 2632 16777215] ) ] spids: [2586 2592 2635] ) ] spids: [2583 2638] ) (C {(eval)} {(SQ <'"$@"'>)} {(--bisect)} {(--)} { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_NAMES))})] ) left_token: <Left_CommandSub '$('> spids: [2652 2659] ) } ) ] spids: [2496] ) spids: [2492 2495] ) (command.FuncDef name: bisect_reset body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))}) (command.BraceGroup children: [ (C {(gettextln)} {(DQ ('We are not bisecting.'))}) (command.ControlFlow token:<ControlFlow_Return return>) ] spids: [2682] ) ] ) (command.Case to_match: {(DQ ($ VSub_Pound '$#'))} arms: [ (case_arm pat_list: [{(0)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch spids:[2710]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))}) ] ) left_token: <Left_CommandSub '$('> spids: [2711 2718] ) } spids: [2710] ) ] spids: [2710] ) ] spids: [2707 2708 2720 16777215] ) (case_arm pat_list: [{(1)}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.SimpleCommand words: [ {(git)} {(rev-parse)} {(--quiet)} {(--verify)} {(DQ ($ VSub_Number '$1') ('^{commit}'))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:invalid spids:[2747]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2747] ) ] spids: [2747] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("invalid' is not a valid commit") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [2756 2764] ) ) } ) ] spids: [2744] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch spids:[2771]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2771] ) ] spids: [2771] ) ] spids: [2723 2724 2776 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [2779 2780 2785 16777215] ) ] spids: [2698 2704 2788] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp] children: [ (command.Pipeline children: [(C {(test)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_HEAD))})] negated: T ) (command.Pipeline children: [(C {(git)} {(checkout)} {(DQ ($ VSub_Name '$branch'))} {(--)})] negated: T ) ] ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("Could not check out original HEAD '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("branch'.\n") ("Try 'git bisect reset <commit>'.") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [2826 2835] ) ) } ) ] spids: [16777215 2820] ) ] spids: [16777215 2839] ) (C {(bisect_clean_state)}) ] spids: [2668] ) spids: [2664 2667] ) (command.FuncDef name: bisect_clean_state body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(git)} {(for-each-ref)} {(--format) (Lit_Other '=') (SQ <'%(refname) %(objectname)'>)} {(refs/bisect/) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\*'>)} ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(ref)} {(hash)})] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(update-ref)} {(-d)} {($ VSub_Name '$ref')} {($ VSub_Name '$hash')} ) (command.ControlFlow token: <ControlFlow_Exit exit> ) ] ) ] spids: [2883 2901] ) ) ] negated: F ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_EXPECTED_REV))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_ANCESTORS_OK))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_NAMES))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_RUN))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/head-name))}) (C {(git)} {(update-ref)} {(-d)} {(--no-deref)} {(BISECT_HEAD)}) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_START))}) ] ) ] spids: [2851] ) spids: [2847 2850] ) (command.FuncDef name: bisect_replay body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:file spids:[3029]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [3029] ) ] spids: [3029] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(1)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('No logfile given'))})] ) left_token: <Left_CommandSub '$('> spids: [3050 3056] ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name '$file'))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('cannot read ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('file for replaying') ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [3073 3081] ) ) } ) ] ) (C {(bisect_reset)}) (command.WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(git)} {(bisect)} {(command)} {(rev)})] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DPipe Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Name '$git') (' ') ($ VSub_Name '$bisect'))} {(Lit_Other '=')} {(DQ ('git bisect'))} ) (C {(test)} {(DQ ($ VSub_Name '$git'))} {(Lit_Other '=')} {(DQ (git-bisect))}) (command.ControlFlow token: <ControlFlow_Continue continue> ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$git'))} {(Lit_Other '=')} {(DQ (git-bisect))}) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:rev spids:[3155]) op: Equal rhs: {(DQ ($ VSub_Name '$command'))} spids: [3155] ) ] spids: [3155] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:command spids:[3161]) op: Equal rhs: {(DQ ($ VSub_Name '$bisect'))} spids: [3161] ) ] spids: [3161] ) ] spids: [16777215 3152] ) ] spids: [16777215 3167] ) (C {(get_terms)}) (C {(check_and_set_terms)} {(DQ ($ VSub_Name '$command'))}) (command.Case to_match: {(DQ ($ VSub_Name '$command'))} arms: [ (case_arm pat_list: [{(start)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd spids:[3193]) op: Equal rhs: {(DQ ('bisect_start ') ($ VSub_Name '$rev'))} spids: [3193] ) ] spids: [3193] ) (C {(eval)} {(DQ ($ VSub_Name '$cmd'))}) ] spids: [3189 3190 3206 16777215] ) (case_arm pat_list: [ {(DQ ($ VSub_Name '$TERM_GOOD'))} {(DQ ($ VSub_Name '$TERM_BAD'))} {(skip)} ] action: [ (C {(bisect_write)} {(DQ ($ VSub_Name '$command'))} {(DQ ($ VSub_Name '$rev'))} ) ] spids: [3209 3218 3231 16777215] ) (case_arm pat_list: [{(terms)}] action: [(C {(bisect_terms)} {($ VSub_Name '$rev')})] spids: [3234 3235 3242 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('?? what are you talking about?'))}) ] ) left_token: <Left_CommandSub '$('> spids: [3252 3258] ) ) } ) ] spids: [3245 3246 3261 16777215] ) ] spids: [3180 3186 3264] ) ] spids: [3101 3267] ) redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$file'))} ) ] ) (C {(bisect_auto_next)}) ] spids: [3026] ) spids: [3021 3025] ) (command.FuncDef name: bisect_run body: (command.BraceGroup children: [ (C {(bisect_next_check)} {(fail)}) (command.WhileUntil keyword: <KW_While while> cond: [(C {(true)})] body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:command spids:[3302]) op: Equal rhs: {(DQ ($ VSub_At '$@'))} spids: [3302] ) ] spids: [3302] ) (C {(eval_gettextln)} { (DQ ('running ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (command) ) } ) (C {(DQ ($ VSub_At '$@'))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[3322]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3322] ) ] spids: [3322] ) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Name '$res')} {(-lt)} {(0)} {(-o)} {($ VSub_Name '$res')} {(-ge)} {(128)} {(Lit_Other ']')} ) ] action: [ (command.SimpleCommand words: [ {(eval_gettextln)} { (DQ ('bisect run failed:\n') ('exit code ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("res from '") (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ("command' is < 0 or >= 128") ) } ] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_Name '$res')} ) ] spids: [16777215 3352] ) ] spids: [16777215 3375] ) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Name '$res')} {(-eq)} {(125)} {(Lit_Other ']')}) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[3403]) op: Equal rhs: {(SQ <skip>)} spids: [3403] ) ] spids: [3403] ) ] spids: [16777215 3400] ) (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Name '$res')} {(-gt)} {(0)} {(Lit_Other ']')}) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[3425]) op: Equal rhs: {(DQ ($ VSub_Name '$TERM_BAD'))} spids: [3425] ) ] spids: [3425] ) ] spids: [3409 3422] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:state spids:[3434]) op: Equal rhs: {(DQ ($ VSub_Name '$TERM_GOOD'))} spids: [3434] ) ] spids: [3434] ) ] spids: [3431 3440] ) (command.Subshell child: (command.SimpleCommand words: [{(bisect_state)} {($ VSub_Name '$state')}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_RUN))} ) ] ) spids: [3448 3460] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[3463]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3463] ) ] spids: [3463] ) (C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_RUN))}) (command.If arms: [ (if_arm cond: [ (command.SimpleCommand words: [ {(sane_grep)} { (DQ ('first ') ($ VSub_Name '$TERM_BAD') (' commit could be any of')) } {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_RUN))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] action: [ (command.SimpleCommand words: [{(gettextln)} {(DQ ('bisect run cannot continue any more'))}] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_Name '$res')} ) ] spids: [16777215 3498] ) ] spids: [16777215 3516] ) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_Name '$res')} {(-ne)} {(0)} {(Lit_Other ']')}) ] action: [ (command.SimpleCommand words: [ {(eval_gettextln)} { (DQ ('bisect run failed:\n') ("'bisect_state ") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("state' exited with error code ") (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (res) ) } ] redirects: [ (redir.Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_Name '$res')} ) ] spids: [16777215 3533] ) ] spids: [16777215 3556] ) (command.If arms: [ (if_arm cond: [ (command.SimpleCommand words: [ {(sane_grep)} {(DQ ('is the first ') ($ VSub_Name '$TERM_BAD') (' commit'))} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_RUN))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] action: [ (C {(gettextln)} {(DQ ('bisect run success'))}) (command.Sentence child: (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 3579] ) ] spids: [16777215 3595] ) ] spids: [3299 3599] ) ) ] spids: [3285] ) spids: [3280 3284] ) (command.FuncDef name: bisect_log body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('We are not bisecting.'))})] ) left_token: <Left_CommandSub '$('> spids: [3626 3632] ) ) } ) ] ) (C {(cat)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_LOG))}) ] spids: [3609] ) spids: [3604 3608] ) (command.FuncDef name: get_terms body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))})] action: [ (command.BraceGroup children: [(C {(read)} {(TERM_BAD)}) (C {(read)} {(TERM_GOOD)})] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))} ) ] spids: [3669] ) ] spids: [16777215 3666] ) ] spids: [16777215 3691] ) ] spids: [3651] ) spids: [3646 3650] ) (command.FuncDef name: write_terms body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_BAD spids:[3704]) op: Equal rhs: {($ VSub_Number '$1')} spids: [3704] ) ] spids: [3704] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TERM_GOOD spids:[3708]) op: Equal rhs: {($ VSub_Number '$2')} spids: [3708] ) ] spids: [3708] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$TERM_BAD'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$TERM_GOOD'))} ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('please use two different terms'))})] ) left_token: <Left_CommandSub '$('> spids: [3733 3739] ) ) } ) ] spids: [16777215 3727] ) ] spids: [16777215 3743] ) (C {(check_term_format)} {(DQ ($ VSub_Name '$TERM_BAD'))} {(bad)}) (C {(check_term_format)} {(DQ ($ VSub_Name '$TERM_GOOD'))} {(good)}) (command.SimpleCommand words: [ {(printf)} {(SQ <'%s\\n%s\\n'>)} {(DQ ($ VSub_Name '$TERM_BAD'))} {(DQ ($ VSub_Name '$TERM_GOOD'))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))} ) ] ) ] spids: [3701] ) spids: [3696 3700] ) (command.FuncDef name: check_term_format body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:term spids:[3795]) op: Equal rhs: {($ VSub_Number '$1')} spids: [3795] ) ] spids: [3795] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(check-ref-format)} {(refs/bisect/) (DQ ($ VSub_Name '$term'))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("term' is not a valid term") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [3814 3822] ) ) } ) ] ) (command.Case to_match: {(DQ ($ VSub_Name '$term'))} arms: [ (case_arm pat_list: [ {(help)} {(start)} {(terms)} {(skip)} {(next)} {(reset)} {(visualize)} {(replay)} {(log)} {(run)} ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("can't use the builtin command '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("term' as a term") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [3860 3868] ) ) } ) ] spids: [3835 3854 3872 16777215] ) (case_arm pat_list: [{(bad)} {(new)}] action: [ (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(bad)} ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("can't change the meaning of term '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("term'") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [3917 3925] ) ) } ) ] spids: [16777215 3895] ) ] spids: [16777215 3929] ) ] spids: [3875 3878 3932 16777215] ) (case_arm pat_list: [{(good)} {(old)}] action: [ (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Number '$2'))} {(KW_Bang '!') (Lit_Other '=')} {(good)} ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("can't change the meaning of term '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("term'") ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [3961 3969] ) ) } ) ] spids: [16777215 3955] ) ] spids: [16777215 3973] ) ] spids: [3935 3938 3976 16777215] ) ] spids: [3826 3832 3979] ) ] spids: [3792] ) spids: [3787 3791] ) (command.FuncDef name: check_and_set_terms body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd spids:[3992]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [3992] ) ] spids: [3992] ) (command.Case to_match: {(DQ ($ VSub_Name '$cmd'))} arms: [ (case_arm pat_list: [{(skip)} {(start)} {(terms)}] spids: [4007 4012 4014 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))}) (C {(test)} {(DQ ($ VSub_Name '$cmd'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$TERM_BAD'))} ) (C {(test)} {(DQ ($ VSub_Name '$cmd'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$TERM_GOOD'))} ) ] ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("Invalid command: you're currently in a ") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (TERM_BAD/) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('TERM_GOOD bisect.') ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [4069 4079] ) ) } ) ] spids: [16777215 4063] ) ] spids: [16777215 4083] ) (command.Case to_match: {(DQ ($ VSub_Name '$cmd'))} arms: [ (case_arm pat_list: [{(bad)} {(good)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))} ) ] negated: T ) ] action: [(C {(write_terms)} {(bad)} {(good)})] spids: [16777215 4115] ) ] spids: [16777215 4125] ) ] spids: [4095 4098 4128 16777215] ) (case_arm pat_list: [{(new)} {(old)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))} ) ] negated: T ) ] action: [(C {(write_terms)} {(new)} {(old)})] spids: [16777215 4151] ) ] spids: [16777215 4161] ) ] spids: [4131 4134 4164 16777215] ) ] spids: [4086 4092 4167] ) ] spids: [4017 4018 4169 16777215] ) ] spids: [3998 4004 4172] ) ] spids: [3989] ) spids: [3984 3988] ) (command.FuncDef name: bisect_voc body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(bad)}] action: [(C {(echo)} {(DQ ('bad|new'))})] spids: [4194 4195 4203 16777215] ) (case_arm pat_list: [{(good)}] action: [(C {(echo)} {(DQ ('good|old'))})] spids: [4206 4207 4215 16777215] ) ] spids: [4185 4191 4218] ) ] spids: [4182] ) spids: [4177 4181] ) (command.FuncDef name: bisect_terms body: (command.BraceGroup children: [ (C {(get_terms)}) (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [(C {(test)} {(-s)} {(DQ ($ VSub_Name '$GIT_DIR') (/BISECT_TERMS))})] negated: T ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('no terms defined'))})] ) left_token: <Left_CommandSub '$('> spids: [4254 4260] ) ) } ) ] spids: [16777215 4248] ) ] spids: [16777215 4264] ) (command.Case to_match: {(DQ ($ VSub_Pound '$#'))} arms: [ (case_arm pat_list: [{(0)}] action: [ (C {(gettextln)} { (DQ ('Your current terms are ') ($ VSub_Name '$TERM_GOOD') (' for the old state\n') ('and ') ($ VSub_Name '$TERM_BAD') (' for the new state.') ) } ) ] spids: [4276 4277 4292 16777215] ) (case_arm pat_list: [{(1)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:arg spids:[4299]) op: Equal rhs: {($ VSub_Number '$1')} spids: [4299] ) ] spids: [4299] ) (command.Case to_match: {(DQ ($ VSub_Name '$arg'))} arms: [ (case_arm pat_list: [{(--term-good)} {(--term-old)}] action: [(C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$TERM_GOOD'))})] spids: [4312 4315 4329 16777215] ) (case_arm pat_list: [{(--term-bad)} {(--term-new)}] action: [(C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$TERM_BAD'))})] spids: [4332 4335 4349 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('invalid argument ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("arg for 'git bisect terms'.\n") ( 'Supported options are: --term-good|--term-old and --term-bad|--term-new.' ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [4359 4368] ) ) } ) ] spids: [4352 4353 4372 16777215] ) ] spids: [4303 4309 4375] ) ] spids: [4295 4296 4378 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [4381 4382 4387 16777215] ) ] spids: [4267 4273 4390] ) ] spids: [4228] ) spids: [4223 4227] ) (command.Case to_match: {(DQ ($ VSub_Pound '$#'))} arms: [ (case_arm pat_list:[{(0)}] action:[(C {(usage)})] spids:[4403 4404 4409 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd spids:[4415]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [4415] ) ] spids: [4415] ) (C {(get_terms)}) (C {(shift)}) (command.Case to_match: {(DQ ($ VSub_Name '$cmd'))} arms: [ (case_arm pat_list: [{(help)}] action: [(C {(git)} {(bisect)} {(-h)})] spids: [4436 4437 4446 16777215] ) (case_arm pat_list: [{(start)}] action: [(C {(bisect_start)} {(DQ ($ VSub_At '$@'))})] spids: [4449 4450 4459 16777215] ) (case_arm pat_list: [ {(bad)} {(good)} {(new)} {(old)} {(DQ ($ VSub_Name '$TERM_BAD'))} {(DQ ($ VSub_Name '$TERM_GOOD'))} ] action: [(C {(bisect_state)} {(DQ ($ VSub_Name '$cmd'))} {(DQ ($ VSub_At '$@'))})] spids: [4462 4477 4490 16777215] ) (case_arm pat_list: [{(skip)}] action: [(C {(bisect_skip)} {(DQ ($ VSub_At '$@'))})] spids: [4493 4494 4503 16777215] ) (case_arm pat_list: [{(next)}] action: [(C {(bisect_next)} {(DQ ($ VSub_At '$@'))})] spids: [4506 4507 4520 16777215] ) (case_arm pat_list: [{(visualize)} {(view)}] action: [(C {(bisect_visualize)} {(DQ ($ VSub_At '$@'))})] spids: [4523 4526 4535 16777215] ) (case_arm pat_list: [{(reset)}] action: [(C {(bisect_reset)} {(DQ ($ VSub_At '$@'))})] spids: [4538 4539 4548 16777215] ) (case_arm pat_list: [{(replay)}] action: [(C {(bisect_replay)} {(DQ ($ VSub_At '$@'))})] spids: [4551 4552 4561 16777215] ) (case_arm pat_list: [{(log)}] action: [(C {(bisect_log)})] spids: [4564 4565 4570 16777215] ) (case_arm pat_list: [{(run)}] action: [(C {(bisect_run)} {(DQ ($ VSub_At '$@'))})] spids: [4573 4574 4583 16777215] ) (case_arm pat_list: [{(terms)}] action: [(C {(bisect_terms)} {(DQ ($ VSub_At '$@'))})] spids: [4586 4587 4596 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [4599 4600 4605 16777215] ) ] spids: [4427 4433 4608] ) ] spids: [4411 4412 16777215 4610] ) ] spids: [4395 4401 4610] ) ] )