(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TOOL_MODE) op: assign_op.Equal rhs: {<diff>} spids: [19] ) ] ) (C {<.>} {<git-mergetool--lib>}) (command.ShFunction name: should_prompt body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prompt_merge) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git>} {<config>} {<--bool>} {<mergetool.prompt>}) (C {<echo>} {<true>}) ] ) ] ) ) } spids: [41] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prompt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git>} {<config>} {<--bool>} {<difftool.prompt>}) (C {<echo>} {($ Id.VSub_DollarName '$prompt_merge')}) ] ) ] ) ) } spids: [59] ) ] ) (command.If arms: [ (if_arm cond: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$prompt'))} {<Id.Lit_Equals '='>} {<true>}) ] action: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_NO_PROMPT'))})] spids: [77 90] ) ] else_action: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_PROMPT'))})] ) ] ) ) (command.ShFunction name: use_ext_cmd body: (command.BraceGroup children: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD'))})] ) ) (command.ShFunction name: launch_merge_tool body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MERGED) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [165] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOCAL) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [171] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REMOTE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [183] ) ] ) (command.If arms: [ (if_arm cond: [(C {<should_prompt>})] action: [ (C {<printf>} {(DQ <Id.Lit_Other '\\'> <"nViewing (%s/%s): '%s'"> <Id.Lit_Other '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_PATH_COUNTER'))} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_PATH_TOTAL'))} {(DQ ($ Id.VSub_DollarName '$MERGED'))} ) (command.If arms: [ (if_arm cond: [(C {<use_ext_cmd>})] action: [ (C {<printf>} {(DQ <"Launch '%s' [Y/n]? ">)} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD'))} ) ] spids: [230 235] ) ] else_action: [ (C {<printf>} {(DQ <"Launch '%s' [Y/n]? ">)} {(DQ ($ Id.VSub_DollarName '$merge_tool'))} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read>} {<ans>}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) (command.If arms: [ (if_arm cond: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$ans'))} {<Id.Lit_Equals '='>} {<n>}) ] action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [277 290] ) ] ) ] spids: [198 203] ) ] ) (command.If arms: [ (if_arm cond: [(C {<use_ext_cmd>})] action: [ (C {<export>} {<BASE>}) (C {<eval>} {($ Id.VSub_DollarName '$GIT_DIFFTOOL_EXTCMD')} {(SQ <'"$LOCAL"'>)} {(SQ <'"$REMOTE"'>)} ) ] spids: [303 308] ) ] else_action: [(C {<run_merge_tool>} {(DQ ($ Id.VSub_DollarName '$merge_tool'))})] ) ] ) ) (command.If arms: [ (if_arm cond: [(command.Pipeline children:[(C {<use_ext_cmd>})] negated:T)] action: [ (command.If arms: [ (if_arm cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_TOOL'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merge_tool) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$GIT_DIFF_TOOL'))} spids: [367] ) ] ) ] spids: [353 364] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merge_tool) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [(C {<get_merge_tool>})] ) ) ) } spids: [376] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) ] ) ] spids: [344 350] ) ] ) (command.If arms: [ (if_arm cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_DIRDIFF'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOCAL) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [406] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REMOTE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [412] ) ] ) (C {<run_merge_tool>} {(DQ ($ Id.VSub_DollarName '$merge_tool'))} {<false>}) ] spids: [393 403] ) ] else_action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<6>})] body: (command.DoGroup children: [ (C {<launch_merge_tool>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} {(DQ ($ Id.VSub_Number '$5'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [462] ) ] ) (command.If arms: [ (if_arm cond: [(C {<test>} {($ Id.VSub_DollarName '$status')} {<-ge>} {<126>})] action: [ (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$status')} ) ] spids: [466 477] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$status'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} ) (C {<test>} {(DQ ($ Id.VSub_DollarName '$GIT_DIFFTOOL_TRUST_EXIT_CODE'))} {<Id.Lit_Equals '='>} {<true>} ) ] ) ] action: [ (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$status')} ) ] spids: [497 524] ) ] ) (C {<shift>} {<7>}) ] ) ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )