(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'bisect can handle submodules'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<.>} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) <'/lib-submodule-update.sh'>}) (command.ShFunction name: git_bisect body: (BraceGroup children: [ (command.AndOr ops: [ Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (command.Simple words: [{<git>} {<status>} {<-su>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})] do_fork: T ) (command.Simple words: [{<ls>} {<-1pR>} {<Id.Lit_Star '*'>}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})] do_fork: T ) (C {<tar>} {<cf>} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/tmp.tar'>)} {<Id.Lit_Star '*'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GOOD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<HEAD>}) ) } spids: [68] ) ] ) (C {<git>} {<checkout>} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{<echo>} {(DQ <foo>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<bar>})] do_fork: T ) (C {<git>} {<add>} {<bar>}) (C {<git>} {<commit>} {<-m>} {(DQ <'bisect bad'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BAD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<HEAD>}) ) } spids: [127] ) ] ) (C {<git>} {<reset>} {<--hard>} {<HEAD> <Id.Lit_Other '^'> <Id.Lit_Other '^'>}) (C {<git>} {<submodule>} {<update>}) (C {<git>} {<bisect>} {<start>}) (C {<git>} {<bisect>} {<good>} {($ Id.VSub_DollarName '$GOOD')}) (C {<rm>} {<-rf>} {<Id.Lit_Star '*'>}) (C {<tar>} {<xf>} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/tmp.tar'>)}) (command.Simple words: [{<git>} {<status>} {<-su>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<actual>})] do_fork: T ) (command.Simple words: [{<ls>} {<-1pR>} {<Id.Lit_Star '*'>}] redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<actual>})] do_fork: T ) (C {<test_cmp>} {<expect>} {<actual>}) (C {<git>} {<bisect>} {<bad>} {($ Id.VSub_DollarName '$BAD')}) ] ) ] ) ) (C {<test_submodule_switch>} {(DQ <git_bisect>)}) (C {<test_done>}) ] )