(CommandList children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(0)})] action: [(C {(set)} {(--)} {(-h)})] spids: [16777215 28] ) ] spids: [16777215 37] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTS_SPEC) op: Equal rhs: { (DQ ('git subtree add --prefix=<prefix> <commit>\n') ('git subtree add --prefix=<prefix> <repository> <ref>\n') ('git subtree merge --prefix=<prefix> <commit>\n') ('git subtree pull --prefix=<prefix> <repository> <ref>\n') ('git subtree push --prefix=<prefix> <repository> <ref>\n') ('git subtree split --prefix=<prefix> <commit...>\n') ('--\n') ('h,help show the help\n') ('q quiet\n') ('d show debug messages\n') ('P,prefix= the name of the subdir to split out\n') ( 'm,message= use the given message as the commit message for the merge commit\n' ) (" options for 'split'\n") ('annotate= add a prefix to commit message of new commits\n') ('b,branch= create a new branch from the split subtree\n') ('ignore-joins ignore prior --rejoin commits\n') ('onto= try connecting new tree to an existing one\n') ('rejoin merge the new branch back into HEAD\n') (" options for 'add', 'merge', and 'pull'\n") ('squash merge subtree changes as a single commit\n') ) } spids: [39] ) ] spids: [39] ) (C {(eval)} { (DQ (CommandSubPart command_list: (CommandList children: [ (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$OPTS_SPEC'))}) (C {(git)} {(rev-parse)} {(--parseopt)} {(--)} {(DQ ($ VSub_At '$@'))}) ] negated: F ) (C {(echo)} {(ControlFlow_Exit exit)} {($ VSub_QMark '$?')}) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [67 95] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {($ VSub_Name '$PATH') (Lit_Other ':') (CommandSubPart command_list: (CommandList children:[(C {(git)} {(--exec-path)})]) left_token: <Left_CommandSub '$('> spids: [102 106] ) } spids: [99] ) ] spids: [99] ) (C {(.)} {(git-sh-setup)}) (C {(require_work_tree)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:quiet) op:Equal rhs:{(EmptyPart)} spids:[116])] spids: [116] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:branch) op:Equal rhs:{(EmptyPart)} spids:[118])] spids: [118] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(EmptyPart)} spids:[120])] spids: [120] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(EmptyPart)} spids:[122])] spids: [122] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:onto) op:Equal rhs:{(EmptyPart)} spids:[124])] spids: [124] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rejoin) op:Equal rhs:{(EmptyPart)} spids:[126])] spids: [126] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignore_joins) op:Equal rhs:{(EmptyPart)} spids:[128])] spids: [128] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:annotate) op:Equal rhs:{(EmptyPart)} spids:[130])] spids: [130] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:squash) op:Equal rhs:{(EmptyPart)} spids:[132])] spids: [132] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:message) op:Equal rhs:{(EmptyPart)} spids:[134])] spids: [134] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:prefix) op:Equal rhs:{(EmptyPart)} spids:[136])] spids: [136] ) (FuncDef name: debug body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$debug'))})] action: [ (SimpleCommand words: [{(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Star '$*'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [16777215 158] ) ] spids: [16777215 177] ) ] spids: [144] ) spids: [139 143] ) (FuncDef name: say body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$quiet'))})] action: [ (SimpleCommand words: [{(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Star '$*'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [16777215 201] ) ] spids: [16777215 220] ) ] spids: [187] ) spids: [182 186] ) (FuncDef name: progress body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$quiet'))})] action: [ (SimpleCommand words: [{(printf)} {(DQ ('%s') (Lit_Other '\\') (r))} {(DQ ($ VSub_Star '$*'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [16777215 244] ) ] spids: [16777215 263] ) ] spids: [230] ) spids: [225 229] ) (FuncDef name: assert body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Pipeline children:[(C {(DQ ($ VSub_At '$@'))})] negated:T)] action: [(C {(die)} {(DQ ('assertion failed: '))} {(DQ ($ VSub_At '$@'))})] spids: [16777215 285] ) ] spids: [16777215 299] ) ] spids: [273] ) spids: [268 272] ) (WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Pound '$#')} {(-gt)} {(0)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [318] ) ] spids: [318] ) (C {(shift)}) (Case to_match: {(DQ ($ VSub_Name '$opt'))} arms: [ (case_arm pat_list: [{(-q)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:quiet) op:Equal rhs:{(1)} spids:[341])] spids: [341] ) ] spids: [337 338 345 16777215] ) (case_arm pat_list: [{(-d)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(1)} spids:[352])] spids: [352] ) ] spids: [348 349 356 16777215] ) (case_arm pat_list: [{(--annotate)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:annotate) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [363] ) ] spids: [363] ) (C {(shift)}) ] spids: [359 360 372 16777215] ) (case_arm pat_list: [{(--no-annotate)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:annotate) op: Equal rhs: {(EmptyPart)} spids: [379] ) ] spids: [379] ) ] spids: [375 376 382 16777215] ) (case_arm pat_list: [{(-b)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:branch) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [389] ) ] spids: [389] ) (C {(shift)}) ] spids: [385 386 398 16777215] ) (case_arm pat_list: [{(-P)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /)}) spids: [407 411] ) ) } spids: [405] ) ] spids: [405] ) (C {(shift)}) ] spids: [401 402 418 16777215] ) (case_arm pat_list: [{(-m)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:message) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [425] ) ] spids: [425] ) (C {(shift)}) ] spids: [421 422 434 16777215] ) (case_arm pat_list: [{(--no-prefix)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: {(EmptyPart)} spids: [441] ) ] spids: [441] ) ] spids: [437 438 444 16777215] ) (case_arm pat_list: [{(--onto)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:onto) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [451] ) ] spids: [451] ) (C {(shift)}) ] spids: [447 448 460 16777215] ) (case_arm pat_list: [{(--no-onto)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:onto) op: Equal rhs: {(EmptyPart)} spids: [467] ) ] spids: [467] ) ] spids: [463 464 470 16777215] ) (case_arm pat_list: [{(--rejoin)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rejoin) op:Equal rhs:{(1)} spids:[477])] spids: [477] ) ] spids: [473 474 481 16777215] ) (case_arm pat_list: [{(--no-rejoin)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rejoin) op: Equal rhs: {(EmptyPart)} spids: [488] ) ] spids: [488] ) ] spids: [484 485 491 16777215] ) (case_arm pat_list: [{(--ignore-joins)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignore_joins) op: Equal rhs: {(1)} spids: [498] ) ] spids: [498] ) ] spids: [494 495 502 16777215] ) (case_arm pat_list: [{(--no-ignore-joins)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignore_joins) op: Equal rhs: {(EmptyPart)} spids: [509] ) ] spids: [509] ) ] spids: [505 506 512 16777215] ) (case_arm pat_list: [{(--squash)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:squash) op:Equal rhs:{(1)} spids:[519])] spids: [519] ) ] spids: [515 516 523 16777215] ) (case_arm pat_list: [{(--no-squash)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:squash) op: Equal rhs: {(EmptyPart)} spids: [530] ) ] spids: [530] ) ] spids: [526 527 533 16777215] ) (case_arm pat_list: [{(--)}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [536 537 543 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(die)} {(DQ ('Unexpected option: ') ($ VSub_Name '$opt'))})] spids: [546 547 558 16777215] ) ] spids: [328 334 561] ) ] spids: [315 563] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:command) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [566] ) ] spids: [566] ) (C {(shift)}) (Case to_match: {(DQ ($ VSub_Name '$command'))} arms: [ (case_arm pat_list: [{(add)} {(merge)} {(pull)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:default) op:Equal rhs:{(EmptyPart)} spids:[590])] spids: [590] ) ] spids: [582 587 593 16777215] ) (case_arm pat_list: [{(split)} {(push)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:default) op: Equal rhs: {(DQ ('--default HEAD'))} spids: [601] ) ] spids: [601] ) ] spids: [595 598 607 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(die)} {(DQ ("Unknown command '") ($ VSub_Name '$command') ("'"))})] spids: [609 610 622 16777215] ) ] spids: [574 580 624] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$prefix'))})] action: [(C {(die)} {(DQ ('You must provide the --prefix option.'))})] spids: [16777215 637] ) ] spids: [16777215 646] ) (Case to_match: {(DQ ($ VSub_Name '$command'))} arms: [ (case_arm pat_list: [{(add)}] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-e)} {(DQ ($ VSub_Name '$prefix'))}) (C {(die)} {(DQ ("prefix '") ($ VSub_Name '$prefix') ("' already exists."))}) ] ) ] spids: [657 658 681 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-e)} {(DQ ($ VSub_Name '$prefix'))}) (C {(die)} {(DQ ("'") ($ VSub_Name '$prefix') ("' does not exist; use 'git subtree add'"))} ) ] ) ] spids: [683 684 707 16777215] ) ] spids: [649 655 709] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(DQ ($ VSub_Name '$prefix') (/.))})] ) left_token: <Left_CommandSub '$('> spids: [714 721] ) ) } spids: [712] ) ] spids: [712] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$command'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (pull))}) (C {(test)} {(DQ ($ VSub_Name '$command'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (add))}) (C {(test)} {(DQ ($ VSub_Name '$command'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (push))}) ] ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {($ VSub_Name '$default')} {(--revs-only)} {(DQ ($ VSub_At '$@'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [776 788] ) } spids: [775] ) ] spids: [775] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dirs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {(--no-revs)} {(--no-flags)} {(DQ ($ VSub_At '$@'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [798 810] ) } spids: [797] ) ] spids: [797] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$dirs'))})] action: [(C {(die)} {(DQ ('Error: Use --prefix instead of bare filenames.'))})] spids: [16777215 830] ) ] spids: [16777215 840] ) ] spids: [16777215 772] ) ] spids: [16777215 842] ) (C {(debug)} {(DQ ('command: {') ($ VSub_Name '$command') ('}'))}) (C {(debug)} {(DQ ('quiet: {') ($ VSub_Name '$quiet') ('}'))}) (C {(debug)} {(DQ ('revs: {') ($ VSub_Name '$revs') ('}'))}) (C {(debug)} {(DQ ('dir: {') ($ VSub_Name '$dir') ('}'))}) (C {(debug)} {(DQ ('opts: {') ($ VSub_Star '$*') ('}'))}) (C {(debug)}) (FuncDef name: cache_setup body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cachedir) op: Equal rhs: {(DQ ($ VSub_Name '$GIT_DIR') (/subtree-cache/) ($ VSub_Dollar '$$'))} spids: [896] ) ] spids: [896] ) (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$cachedir'))}) (C {(die)} {(DQ ("Can't delete old cachedir: ") ($ VSub_Name '$cachedir'))}) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$cachedir'))}) (C {(die)} {(DQ ("Can't create new cachedir: ") ($ VSub_Name '$cachedir'))}) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$cachedir') (/notree))}) (C {(die)} {(DQ ("Can't create new cachedir: ") ($ VSub_Name '$cachedir') (/notree))}) ] ) (SimpleCommand words: [{(debug)} {(DQ ('Using cachedir: ') ($ VSub_Name '$cachedir'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [893] ) spids: [888 892] ) (FuncDef name: cache_get body: (BraceGroup children: [ (ForEach iter_name: oldrev iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name '$cachedir') (/) ($ VSub_Name '$oldrev'))} ) ] action: [ (SimpleCommand words: [{(read)} {(newrev)}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$cachedir') (/) ($ VSub_Name '$oldrev'))} ) ] ) (C {(echo)} {($ VSub_Name '$newrev')}) ] spids: [16777215 1011] ) ] spids: [16777215 1031] ) ] spids: [995 1034] ) spids: [989 16777215] ) ] spids: [981] ) spids: [976 980] ) (FuncDef name: cache_miss body: (BraceGroup children: [ (ForEach iter_name: oldrev iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name '$cachedir') (/) ($ VSub_Name '$oldrev'))} ) ] negated: T ) ] action: [(C {(echo)} {($ VSub_Name '$oldrev')})] spids: [16777215 1076] ) ] spids: [16777215 1084] ) ] spids: [1058 1087] ) spids: [1052 16777215] ) ] spids: [1044] ) spids: [1039 1043] ) (FuncDef name: check_parents body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:missed) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cache_miss)} {(DQ ($ VSub_At '$@'))})] ) left_token: <Left_CommandSub '$('> spids: [1101 1107] ) } spids: [1100] ) ] spids: [1100] ) (ForEach iter_name: miss iter_words: [{($ VSub_Name '$missed')}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name '$cachedir') (/notree/) ($ VSub_Name '$miss'))} ) ] negated: T ) ] action: [(C {(debug)} {(DQ (' incorrect order: ') ($ VSub_Name '$miss'))})] spids: [16777215 1137] ) ] spids: [16777215 1148] ) ] spids: [1119 1151] ) spids: [1115 16777215] ) ] spids: [1097] ) spids: [1092 1096] ) (FuncDef name: set_notree body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ (1))}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$cachedir') (/notree/) ($ VSub_Number '$1'))} ) ] ) ] spids: [1161] ) spids: [1156 1160] ) (FuncDef name: cache_set body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldrev) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1189] ) ] spids: [1189] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newrev) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1195] ) ] spids: [1195] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$oldrev'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (latest_old))} ) (C {(test)} {(DQ ($ VSub_Name '$oldrev'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (latest_new))} ) (C {(test)} {(-e)} {(DQ ($ VSub_Name '$cachedir') (/) ($ VSub_Name '$oldrev'))}) ] ) ] action: [ (C {(die)} {(DQ ('cache for ') ($ VSub_Name '$oldrev') (' already exists!'))}) ] spids: [16777215 1246] ) ] spids: [16777215 1258] ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$newrev'))}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$cachedir') (/) ($ VSub_Name '$oldrev'))} ) ] ) ] spids: [1186] ) spids: [1181 1185] ) (FuncDef name: rev_exists body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(git)} {(rev-parse)} {(DQ ($ VSub_Number '$1'))}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1302] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1310 1318] ) ] spids: [1282] ) spids: [1277 1281] ) (FuncDef name: rev_is_descendant_of_branch body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newrev) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1331] ) ] spids: [1331] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:branch) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1337] ) ] spids: [1337] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:branch_hash) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(git)} {(rev-parse)} {(DQ ($ VSub_Name '$branch'))})] ) left_token: <Left_CommandSub '$('> spids: [1344 1352] ) } spids: [1343] ) ] spids: [1343] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:match) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-list)} {(-1)} {(DQ ($ VSub_Name '$branch_hash'))} {(DQ ('^') ($ VSub_Name '$newrev'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1356 1371] ) } spids: [1355] ) ] spids: [1355] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$match'))})] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1386] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1394 1402] ) ] spids: [1328] ) spids: [1323 1327] ) (FuncDef name: try_remove_previous body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(rev_exists)} {(DQ ($ VSub_Number '$1') ('^'))})] action: [(C {(echo)} {(DQ ('^') ($ VSub_Number '$1') ('^'))})] spids: [16777215 1434] ) ] spids: [16777215 1446] ) ] spids: [1421] ) spids: [1416 1420] ) (FuncDef name: find_latest_squash body: (BraceGroup children: [ (C {(debug)} {(DQ ('Looking for latest squash (') ($ VSub_Name '$dir') (')...'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1468] ) ] spids: [1468] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sq) op:Equal rhs:{(EmptyPart)} spids:[1474])] spids: [1474] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:main) op:Equal rhs:{(EmptyPart)} spids:[1477])] spids: [1477] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sub) op:Equal rhs:{(EmptyPart)} spids:[1480])] spids: [1480] ) (Pipeline children: [ (C {(git)} {(log)} {(--grep) (Lit_Other '=') (DQ ('^git-subtree-dir: ') ($ VSub_Name '$dir') ('/*') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ) } {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (SQ <'START %H%n%s%n%n%b%nEND%n'>)} {(HEAD)} ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(a)} {(b)} {(junk)})] body: (DoGroup children: [ (C {(debug)} { (DQ ($ VSub_Name '$a') (' ') ($ VSub_Name '$b') (' ') ($ VSub_Name '$junk')) } ) (C {(debug)} { (DQ ('{{') ($ VSub_Name '$sq') (/) ($ VSub_Name '$main') (/) ($ VSub_Name '$sub') ('}}') ) } ) (Case to_match: {(DQ ($ VSub_Name '$a'))} arms: [ (case_arm pat_list: [{(START)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sq) op: Equal rhs: {(DQ ($ VSub_Name '$b'))} spids: [1562] ) ] spids: [1562] ) ] spids: [1558 1559 1568 16777215] ) (case_arm pat_list: [{(git-subtree-mainline) (Lit_Other ':')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(DQ ($ VSub_Name '$b'))} spids: [1576] ) ] spids: [1576] ) ] spids: [1571 1573 1582 16777215] ) (case_arm pat_list: [{(git-subtree-split) (Lit_Other ':')}] action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {(DQ ($ VSub_Name '$b') ('^0'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1592 1601] ) ) } spids: [1590] ) ] spids: [1590] ) (C {(die)} { (DQ ('could not rev-parse split hash ') ($ VSub_Name '$b') (' from commit ') ($ VSub_Name '$sq') ) } ) ] ) ] spids: [1585 1587 1617 16777215] ) (case_arm pat_list: [{(END)}] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$sub'))})] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$main'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sq) op: Equal rhs: {(DQ ($ VSub_Name '$sub'))} spids: [1660] ) ] spids: [1660] ) ] spids: [16777215 1649] ) ] spids: [16777215 1666] ) (C {(debug)} { (DQ ('Squash found: ') ($ VSub_Name '$sq') (' ') ($ VSub_Name '$sub') ) } ) (C {(echo)} {(DQ ($ VSub_Name '$sq'))} {(DQ ($ VSub_Name '$sub'))} ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 1635] ) ] spids: [16777215 1693] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sq) op: Equal rhs: {(EmptyPart)} spids: [1696] ) ] spids: [1696] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(EmptyPart)} spids: [1699] ) ] spids: [1699] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {(EmptyPart)} spids: [1702] ) ] spids: [1702] ) ] spids: [1620 1621 1705 16777215] ) ] spids: [1549 1555 1708] ) ] spids: [1522 1711] ) ) ] negated: F ) ] spids: [1456] ) spids: [1451 1455] ) (FuncDef name: find_existing_splits body: (BraceGroup children: [ (C {(debug)} {(DQ ('Looking for prior splits...'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1731] ) ] spids: [1731] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revs) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1737] ) ] spids: [1737] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:main) op:Equal rhs:{(EmptyPart)} spids:[1743])] spids: [1743] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sub) op:Equal rhs:{(EmptyPart)} spids:[1746])] spids: [1746] ) (Pipeline children: [ (C {(git)} {(log)} {(--grep) (Lit_Other '=') (DQ ('^git-subtree-dir: ') ($ VSub_Name '$dir') ('/*') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ) } {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (SQ <'START %H%n%s%n%n%b%nEND%n'>)} {($ VSub_Name '$revs')} ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(a)} {(b)} {(junk)})] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$a'))} arms: [ (case_arm pat_list: [{(START)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sq) op: Equal rhs: {(DQ ($ VSub_Name '$b'))} spids: [1804] ) ] spids: [1804] ) ] spids: [1800 1801 1810 16777215] ) (case_arm pat_list: [{(git-subtree-mainline) (Lit_Other ':')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(DQ ($ VSub_Name '$b'))} spids: [1818] ) ] spids: [1818] ) ] spids: [1813 1815 1824 16777215] ) (case_arm pat_list: [{(git-subtree-split) (Lit_Other ':')}] action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {(DQ ($ VSub_Name '$b') ('^0'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1834 1843] ) ) } spids: [1832] ) ] spids: [1832] ) (C {(die)} { (DQ ('could not rev-parse split hash ') ($ VSub_Name '$b') (' from commit ') ($ VSub_Name '$sq') ) } ) ] ) ] spids: [1827 1829 1859 16777215] ) (case_arm pat_list: [{(END)}] action: [ (C {(debug)} {(DQ (" Main is: '") ($ VSub_Name '$main') ("'"))}) (If arms: [ (if_arm cond: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$main'))} {(-a)} {(-n)} {(DQ ($ VSub_Name '$sub'))} ) ] action: [ (C {(debug)} { (DQ (' Squash: ') ($ VSub_Name '$sq') (' from ') ($ VSub_Name '$sub') ) } ) (C {(cache_set)} {(DQ ($ VSub_Name '$sq'))} {(DQ ($ VSub_Name '$sub'))} ) ] spids: [16777215 1894] ) ] spids: [16777215 1922] ) (If arms: [ (if_arm cond: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$main'))} {(-a)} {(-n)} {(DQ ($ VSub_Name '$sub'))} ) ] action: [ (C {(debug)} { (DQ (' Prior: ') ($ VSub_Name '$main') (' -> ') ($ VSub_Name '$sub') ) } ) (C {(cache_set)} {($ VSub_Name '$main')} {($ VSub_Name '$sub')}) (C {(cache_set)} {($ VSub_Name '$sub')} {($ VSub_Name '$sub')}) (C {(try_remove_previous)} {(DQ ($ VSub_Name '$main'))}) (C {(try_remove_previous)} {(DQ ($ VSub_Name '$sub'))}) ] spids: [16777215 1944] ) ] spids: [16777215 1985] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(EmptyPart)} spids: [1988] ) ] spids: [1988] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {(EmptyPart)} spids: [1991] ) ] spids: [1991] ) ] spids: [1862 1863 1994 16777215] ) ] spids: [1791 1797 1997] ) ] spids: [1788 2000] ) ) ] negated: F ) ] spids: [1721] ) spids: [1716 1720] ) (FuncDef name: copy_commit body: (BraceGroup children: [ (C {(debug)} {(copy_commit)} {(DQ ('{') ($ VSub_Number '$1') ('}'))} {(DQ ('{') ($ VSub_Number '$2') ('}'))} {(DQ ('{') ($ VSub_Number '$3') ('}'))} ) (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(git)} {(log)} {(-1)} {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (SQ <'%an%n%ae%n%aD%n%cn%n%ce%n%cD%n%B'>) } {(DQ ($ VSub_Number '$1'))} ) (Subshell child: (CommandList children: [ (C {(read)} {(GIT_AUTHOR_NAME)}) (C {(read)} {(GIT_AUTHOR_EMAIL)}) (C {(read)} {(GIT_AUTHOR_DATE)}) (C {(read)} {(GIT_COMMITTER_NAME)}) (C {(read)} {(GIT_COMMITTER_EMAIL)}) (C {(read)} {(GIT_COMMITTER_DATE)}) (C {(export)} {(GIT_AUTHOR_NAME)} {(GIT_AUTHOR_EMAIL)} {(GIT_AUTHOR_DATE)} {(GIT_COMMITTER_NAME)} {(GIT_COMMITTER_EMAIL)} {(GIT_COMMITTER_DATE)} ) (Pipeline children: [ (Subshell child: (CommandList children: [ (C {(printf)} {(DQ ('%s'))} {(DQ ($ VSub_Name '$annotate'))}) (C {(cat)}) ] ) spids: [2123 2140] ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Number '$2'))} {($ VSub_Number '$3')} ) ] negated: F ) ] ) spids: [2065 2159] ) ] negated: F ) (C {(die)} {(DQ ("Can't copy commit ") ($ VSub_Number '$1'))}) ] ) ] spids: [2010] ) spids: [2005 2009] ) (FuncDef name: add_msg body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2181] ) ] spids: [2181] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_old) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2187] ) ] spids: [2187] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_new) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [2193] ) ] spids: [2193] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$message'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit_message) op: Equal rhs: {(DQ ($ VSub_Name '$message'))} spids: [2213] ) ] spids: [2213] ) ] spids: [16777215 2210] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit_message) op: Equal rhs: { (DQ ("Add '") ($ VSub_Name '$dir') ("/' from commit '") ($ VSub_Name '$latest_new') ("'") ) } spids: [2222] ) ] spids: [2222] ) ] spids: [2219 2232] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 2253 stdin_parts: [ ($ VSub_Name '$commit_message') ('\n') ('\n') ('git-subtree-dir: ') ($ VSub_Name '$dir') ('\n') ('git-subtree-mainline: ') ($ VSub_Name '$latest_old') ('\n') ('git-subtree-split: ') ($ VSub_Name '$latest_new') ('\n') ] ) ] ) ] spids: [2178] ) spids: [2173 2177] ) (FuncDef name: add_squashed_msg body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$message'))})] action: [(C {(echo)} {(DQ ($ VSub_Name '$message'))})] spids: [16777215 2276] ) ] else_action: [ (C {(echo)} { (DQ ("Merge commit '") ($ VSub_Number '$1') ("' as '") ($ VSub_Number '$2') ("'")) } ) ] spids: [2286 2300] ) ] spids: [2262] ) spids: [2257 2261] ) (FuncDef name: rejoin_msg body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2313] ) ] spids: [2313] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_old) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2319] ) ] spids: [2319] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_new) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [2325] ) ] spids: [2325] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$message'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit_message) op: Equal rhs: {(DQ ($ VSub_Name '$message'))} spids: [2345] ) ] spids: [2345] ) ] spids: [16777215 2342] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit_message) op: Equal rhs: { (DQ ("Split '") ($ VSub_Name '$dir') ("/' into commit '") ($ VSub_Name '$latest_new') ("'") ) } spids: [2354] ) ] spids: [2354] ) ] spids: [2351 2364] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 2385 stdin_parts: [ ($ VSub_Name '$commit_message') ('\n') ('\n') ('git-subtree-dir: ') ($ VSub_Name '$dir') ('\n') ('git-subtree-mainline: ') ($ VSub_Name '$latest_old') ('\n') ('git-subtree-split: ') ($ VSub_Name '$latest_new') ('\n') ] ) ] ) ] spids: [2310] ) spids: [2305 2309] ) (FuncDef name: squash_msg body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2397] ) ] spids: [2397] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldsub) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2403] ) ] spids: [2403] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newsub) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [2409] ) ] spids: [2409] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newsub_short) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {(DQ ($ VSub_Name '$newsub'))}) ] ) left_token: <Left_CommandSub '$('> spids: [2416 2426] ) } spids: [2415] ) ] spids: [2415] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$oldsub'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldsub_short) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {(DQ ($ VSub_Name '$oldsub'))}) ] ) left_token: <Left_CommandSub '$('> spids: [2445 2455] ) } spids: [2444] ) ] spids: [2444] ) (C {(echo)} { (DQ ("Squashed '") ($ VSub_Name '$dir') ("/' changes from ") ($ VSub_Name '$oldsub_short') (..) ($ VSub_Name '$newsub_short') ) } ) (C {(echo)}) (C {(git)} {(log)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (SQ <'%h %s'>)} {(DQ ($ VSub_Name '$oldsub') (..) ($ VSub_Name '$newsub'))} ) (C {(git)} {(log)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (SQ <'REVERT: %h %s'>)} {(DQ ($ VSub_Name '$newsub') (..) ($ VSub_Name '$oldsub'))} ) ] spids: [16777215 2441] ) ] else_action: [ (C {(echo)} { (DQ ("Squashed '") ($ VSub_Name '$dir') ("/' content from commit ") ($ VSub_Name '$newsub_short') ) } ) ] spids: [2511 2524] ) (C {(echo)}) (C {(echo)} {(DQ ('git-subtree-dir: ') ($ VSub_Name '$dir'))}) (C {(echo)} {(DQ ('git-subtree-split: ') ($ VSub_Name '$newsub'))}) ] spids: [2394] ) spids: [2389 2393] ) (FuncDef name: toptree_for_commit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2557] ) ] spids: [2557] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(log)} {(-1)} {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (SQ <'%T'>)} {(DQ ($ VSub_Name '$commit'))} {(--)} ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [2554] ) spids: [2549 2553] ) (FuncDef name: subtree_for_commit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2600] ) ] spids: [2600] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2606] ) ] spids: [2606] ) (Pipeline children: [ (C {(git)} {(ls-tree)} {(DQ ($ VSub_Name '$commit'))} {(--)} {(DQ ($ VSub_Name '$dir'))}) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(mode)} {(type)} {(tree)} {(name)})] body: (DoGroup children: [ (C {(assert)} {(test)} {(DQ ($ VSub_Name '$name'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$dir'))} ) (C {(assert)} {(test)} {(DQ ($ VSub_Name '$type'))} {(Lit_Other '=')} {(DQ (tree))} {(-o)} {(DQ ($ VSub_Name '$type'))} {(Lit_Other '=')} {(DQ (commit))} ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$type'))} {(Lit_Other '=')} {(DQ (commit))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] ) (C {(echo)} {($ VSub_Name '$tree')}) (ControlFlow token:<ControlFlow_Break break>) ] spids: [2642 2715] ) ) ] negated: F ) ] spids: [2597] ) spids: [2592 2596] ) (FuncDef name: tree_changed body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: {($ VSub_Number '$1')} spids: [2728] ) ] spids: [2728] ) (C {(shift)}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-ne)} {(1)})] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 2746] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ptree) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(toptree_for_commit)} {($ VSub_Number '$1')})] ) left_token: <Left_CommandSub '$('> spids: [2761 2765] ) } spids: [2760] ) ] spids: [2760] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$ptree'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$tree'))} ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 2784] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [2795 2806] ) ] spids: [2757 2809] ) ] spids: [2725] ) spids: [2720 2724] ) (FuncDef name: new_squash_commit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2822] ) ] spids: [2822] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldsub) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2828] ) ] spids: [2828] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newsub) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [2834] ) ] spids: [2834] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(toptree_for_commit)} {($ VSub_Name '$newsub')})] ) left_token: <Left_CommandSub '$('> spids: [2841 2845] ) } spids: [2840] ) ] spids: [2840] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$old'))})] action: [ (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(squash_msg)} {(DQ ($ VSub_Name '$dir'))} {(DQ ($ VSub_Name '$oldsub'))} {(DQ ($ VSub_Name '$newsub'))} ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Name '$tree'))} {(-p)} {(DQ ($ VSub_Name '$old'))} ) ] negated: F ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [16777215 2865] ) ] else_action: [ (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(squash_msg)} {(DQ ($ VSub_Name '$dir'))} {(DQ )} {(DQ ($ VSub_Name '$newsub'))} ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Name '$tree'))}) ] negated: F ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [2906 2940] ) ] spids: [2819] ) spids: [2814 2818] ) (FuncDef name: copy_or_skip body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2953] ) ] spids: [2953] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2959] ) ] spids: [2959] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newparents) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [2965] ) ] spids: [2965] ) (C {(assert)} {(test)} {(-n)} {(DQ ($ VSub_Name '$tree'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:identical) op: Equal rhs: {(EmptyPart)} spids: [2983] ) ] spids: [2983] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nonidentical) op: Equal rhs: {(EmptyPart)} spids: [2986] ) ] spids: [2986] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:p) op:Equal rhs:{(EmptyPart)} spids:[2989])] spids: [2989] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gotparents) op: Equal rhs: {(EmptyPart)} spids: [2992] ) ] spids: [2992] ) (ForEach iter_name: parent iter_words: [{($ VSub_Name '$newparents')}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ptree) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(toptree_for_commit)} {($ VSub_Name '$parent')})] ) left_token: <Left_CommandSub '$('> spids: [3008 3012] ) } spids: [3007] ) ] spids: [3007] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$ptree'))}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$ptree'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$tree'))} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:identical) op: Equal rhs: {(DQ ($ VSub_Name '$parent'))} spids: [3056] ) ] spids: [3056] ) ] spids: [16777215 3049] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nonidentical) op: Equal rhs: {(DQ ($ VSub_Name '$parent'))} spids: [3065] ) ] spids: [3065] ) ] spids: [3062 3071] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:is_new) op:Equal rhs:{(1)} spids:[3083])] spids: [3083] ) (ForEach iter_name: gp iter_words: [{($ VSub_Name '$gotparents')}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$gp'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$parent'))} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:is_new) op: Equal rhs: {(EmptyPart)} spids: [3117] ) ] spids: [3117] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 3114] ) ] spids: [16777215 3123] ) ] spids: [3096 3126] ) spids: [3092 16777215] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$is_new'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gotparents) op: Equal rhs: {(DQ ($ VSub_Name '$gotparents') (' ') ($ VSub_Name '$parent'))} spids: [3143] ) ] spids: [3143] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:p) op: Equal rhs: {(DQ ($ VSub_Name '$p') (' -p ') ($ VSub_Name '$parent'))} spids: [3151] ) ] spids: [3151] ) ] spids: [16777215 3140] ) ] spids: [16777215 3159] ) ] spids: [3004 3162] ) spids: [3000 16777215] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:copycommit) op: Equal rhs: {(EmptyPart)} spids: [3166] ) ] spids: [3166] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$identical'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$nonidentical'))}) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:extras) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-list)} {(--count)} {($ VSub_Name '$identical') (..) ($ VSub_Name '$nonidentical') } ) ] ) left_token: <Left_CommandSub '$('> spids: [3194 3204] ) } spids: [3193] ) ] spids: [3193] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Name '$extras'))} {(-ne)} {(0)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:copycommit) op: Equal rhs: {(1)} spids: [3227] ) ] spids: [3227] ) ] spids: [16777215 3220] ) ] spids: [16777215 3231] ) ] spids: [16777215 3190] ) ] spids: [16777215 3234] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$identical'))}) (C {(test)} {(-z)} {(DQ ($ VSub_Name '$copycommit'))}) ] ) ] action: [(C {(echo)} {($ VSub_Name '$identical')})] spids: [16777215 3258] ) ] else_action: [ (AndOr ops: [Op_DPipe] children: [ (C {(copy_commit)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$tree'))} {(DQ ($ VSub_Name '$p'))} ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [3266 3290] ) ] spids: [2950] ) spids: [2945 2949] ) (FuncDef name: ensure_clean body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [{(git)} {(diff-index)} {(HEAD)} {(--exit-code)} {(--quiet)}] redirects: [(Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) ] negated: T ) ] action: [(C {(die)} {(DQ ('Working tree has modifications. Cannot add.'))})] spids: [16777215 3321] ) ] spids: [16777215 3331] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [{(git)} {(diff-index)} {(--cached)} {(HEAD)} {(--exit-code)} {(--quiet)}] redirects: [(Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) ] negated: T ) ] action: [(C {(die)} {(DQ ('Index has modifications. Cannot add.'))})] spids: [16777215 3354] ) ] spids: [16777215 3364] ) ] spids: [3300] ) spids: [3295 3299] ) (FuncDef name: ensure_valid_ref_format body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(check-ref-format)} {(DQ (refs/heads/) ($ VSub_Number '$1'))}) (C {(die)} {(DQ ("'") ($ VSub_Number '$1') ("' does not look like a ref"))}) ] ) ] spids: [3374] ) spids: [3369 3373] ) (FuncDef name: cmd_add body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-e)} {(DQ ($ VSub_Name '$dir'))})] action: [ (C {(die)} {(DQ ("'") ($ VSub_Name '$dir') ("' already exists. Cannot add."))}) ] spids: [16777215 3419] ) ] spids: [16777215 3431] ) (C {(ensure_clean)}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(1)})] action: [ (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [ {(git)} {(rev-parse)} {(-q)} {(--verify)} {(DQ ($ VSub_Number '$1') ('^{commit}'))} ] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (C {(die)} {(DQ ("'") ($ VSub_Number '$1') ("' does not refer to a commit"))}) ] ) (C {(cmd_add_commit)} {(DQ ($ VSub_At '$@'))}) ] spids: [16777215 3450] ) (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(2)})] action: [ (C {(ensure_valid_ref_format)} {(DQ ($ VSub_Number '$2'))}) (C {(cmd_add_repository)} {(DQ ($ VSub_At '$@'))}) ] spids: [3490 3501] ) ] else_action: [ (C {(say)} {(DQ ("error: parameters were '") ($ VSub_At '$@') ("'"))}) (C {(die)} {(DQ ('Provide either a commit or a repository and commit.'))}) ] spids: [3539 3558] ) ] spids: [3405] ) spids: [3400 3404] ) (FuncDef name: cmd_add_repository body: (BraceGroup children: [ (C {(echo)} {(DQ ('git fetch'))} {(DQ ($ VSub_At '$@'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:repository) op: Equal rhs: {($ VSub_Number '$1')} spids: [3582] ) ] spids: [3582] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:refspec) op: Equal rhs: {($ VSub_Number '$2')} spids: [3586] ) ] spids: [3586] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(fetch)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revs) op:Equal rhs:{(FETCH_HEAD)} spids:[3605])] spids: [3605] ) (C {(set)} {(--)} {($ VSub_Name '$revs')}) (C {(cmd_add_commit)} {(DQ ($ VSub_At '$@'))}) ] spids: [3568] ) spids: [3563 3567] ) (FuncDef name: cmd_add_commit body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {($ VSub_Name '$default')} {(--revs-only)} {(DQ ($ VSub_At '$@'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [3634 3646] ) } spids: [3633] ) ] spids: [3633] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(set)} {(--)} {($ VSub_Name '$revs')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [3662] ) ] spids: [3662] ) (C {(debug)} {(DQ ('Adding ') ($ VSub_Name '$dir') (" as '") ($ VSub_Name '$rev') ("'..."))}) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(read-tree)} {(--prefix) (Lit_Other '=') (DQ ($ VSub_Name '$dir'))} {($ VSub_Name '$rev')} ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(checkout)} {(--)} {(DQ ($ VSub_Name '$dir'))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(git)} {(write-tree)})]) left_token: <Left_CommandSub '$('> spids: [3717 3721] ) } spids: [3716] ) ] spids: [3716] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:headrev) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(HEAD)})]) left_token: <Left_CommandSub '$('> spids: [3732 3738] ) } spids: [3731] ) ] spids: [3731] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$headrev'))}) (C {(test)} {(DQ ($ VSub_Name '$headrev'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$rev'))} ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:headp) op: Equal rhs: {(DQ ('-p ') ($ VSub_Name '$headrev'))} spids: [3776] ) ] spids: [3776] ) ] spids: [16777215 3773] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:headp) op: Equal rhs: {(EmptyPart)} spids: [3786] ) ] spids: [3786] ) ] spids: [3783 3789] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$squash'))})] action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(new_squash_commit)} {(DQ )} {(DQ )} {(DQ ($ VSub_Name '$rev'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [3808 3820] ) } spids: [3807] ) ] spids: [3807] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(add_squashed_msg)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$dir'))} ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Name '$tree'))} {($ VSub_Name '$headp')} {(-p)} {(DQ ($ VSub_Name '$rev'))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [3830 3859] ) } spids: [3829] ) ] spids: [3829] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [16777215 3804] ) ] else_action: [ (AndOr ops: [Op_DAmp Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revp) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(peel_committish)} {(DQ ($ VSub_Name '$rev'))})] ) left_token: <Left_CommandSub '$('> spids: [3872 3878] ) } spids: [3871] ) ] spids: [3871] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:commit) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(add_msg)} {(DQ ($ VSub_Name '$dir'))} {($ VSub_Name '$headrev')} {(DQ ($ VSub_Name '$rev'))} ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Name '$tree'))} {($ VSub_Name '$headp')} {(-p)} {(DQ ($ VSub_Name '$revp'))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [3884 3915] ) } spids: [3883] ) ] spids: [3883] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [3868 3924] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(reset)} {(DQ ($ VSub_Name '$commit'))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(say)} {(DQ ("Added dir '") ($ VSub_Name '$dir') ("'"))}) ] spids: [3630] ) spids: [3625 3629] ) (FuncDef name: cmd_split body: (BraceGroup children: [ (C {(debug)} {(DQ ('Splitting ') ($ VSub_Name '$dir') (...))}) (AndOr ops: [Op_DPipe] children: [ (C {(cache_setup)}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$onto'))})] action: [ (C {(debug)} {(DQ ('Reading history for --onto=') ($ VSub_Name '$onto') (...))}) (Pipeline children: [ (C {(git)} {(rev-list)} {($ VSub_Name '$onto')}) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(rev)})] body: (DoGroup children: [ (C {(debug)} {(DQ (' cache: ') ($ VSub_Name '$rev'))}) (C {(cache_set)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$rev'))}) ] spids: [4020 4050] ) ) ] negated: F ) ] spids: [16777215 3992] ) ] spids: [16777215 4053] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$ignore_joins'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:unrevs) op: Equal rhs: {(EmptyPart)} spids: [4071] ) ] spids: [4071] ) ] spids: [16777215 4068] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:unrevs) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(find_existing_splits)} {(DQ ($ VSub_Name '$dir'))} {(DQ ($ VSub_Name '$revs'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4079 4089] ) ) } spids: [4077] ) ] spids: [4077] ) ] spids: [4074 4093] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:grl) op: Equal rhs: {(SQ <'git rev-list --topo-order --reverse --parents $revs $unrevs'>)} spids: [4109] ) ] spids: [4109] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revmax) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(eval)} {(DQ ($ VSub_Name '$grl'))}) (C {(wc)} {(-l)})] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [4116 4128] ) } spids: [4115] ) ] spids: [4115] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revcount) op:Equal rhs:{(0)} spids:[4131])] spids: [4131] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:createcount) op:Equal rhs:{(0)} spids:[4135])] spids: [4135] ) (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(eval)} {(DQ ($ VSub_Name '$grl'))}) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(rev)} {(parents)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revcount) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$revcount')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [4161 4168] ) } spids: [4160] ) ] spids: [4160] ) (C {(progress)} { (DQ ($ VSub_Name '$revcount') (/) ($ VSub_Name '$revmax') (' (') ($ VSub_Name '$createcount') (')') ) } ) (C {(debug)} {(DQ ('Processing commit: ') ($ VSub_Name '$rev'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exists) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cache_get)} {(DQ ($ VSub_Name '$rev'))})] ) left_token: <Left_CommandSub '$('> spids: [4192 4198] ) } spids: [4191] ) ] spids: [4191] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$exists'))})] action: [ (C {(debug)} {(DQ (' prior: ') ($ VSub_Name '$exists'))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 4212] ) ] spids: [16777215 4226] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:createcount) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$createcount')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [4230 4237] ) } spids: [4229] ) ] spids: [4229] ) (C {(debug)} {(DQ (' parents: ') ($ VSub_Name '$parents'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newparents) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cache_get)} {($ VSub_Name '$parents')})] ) left_token: <Left_CommandSub '$('> spids: [4249 4253] ) } spids: [4248] ) ] spids: [4248] ) (C {(debug)} {(DQ (' newparents: ') ($ VSub_Name '$newparents'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(subtree_for_commit)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$dir'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4266 4276] ) } spids: [4265] ) ] spids: [4265] ) (C {(debug)} {(DQ (' tree is: ') ($ VSub_Name '$tree'))}) (C {(check_parents)} {($ VSub_Name '$parents')}) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$tree'))})] action: [ (C {(set_notree)} {(DQ ($ VSub_Name '$rev'))}) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$newparents'))})] action: [ (C {(cache_set)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$rev'))} ) ] spids: [16777215 4334] ) ] spids: [16777215 4348] ) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 4313] ) ] spids: [16777215 4354] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newrev) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(copy_or_skip)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$tree'))} {(DQ ($ VSub_Name '$newparents'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4359 4373] ) } spids: [4358] ) ] spids: [4358] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(debug)} {(DQ (' newrev is: ') ($ VSub_Name '$newrev'))}) (C {(cache_set)} {(DQ ($ VSub_Name '$rev'))} {(DQ ($ VSub_Name '$newrev'))}) (C {(cache_set)} {(latest_new)} {(DQ ($ VSub_Name '$newrev'))}) (C {(cache_set)} {(latest_old)} {(DQ ($ VSub_Name '$rev'))}) ] spids: [4157 4419] ) ) ] negated: F ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_new) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(cache_get)} {(latest_new)})]) left_token: <Left_CommandSub '$('> spids: [4430 4434] ) } spids: [4429] ) ] spids: [4429] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$latest_new'))})] action: [(C {(die)} {(DQ ('No new revisions were found'))})] spids: [16777215 4448] ) ] spids: [16777215 4458] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$rejoin'))})] action: [ (C {(debug)} {(DQ ('Merging split branch into HEAD...'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_old) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cache_get)} {(latest_old)})] ) left_token: <Left_CommandSub '$('> spids: [4484 4488] ) } spids: [4483] ) ] spids: [4483] ) (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [ {(git)} {(merge)} {(-s)} {(ours)} {(--allow-unrelated-histories)} {(-m)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(rejoin_msg)} {(DQ ($ VSub_Name '$dir'))} {(DQ ($ VSub_Name '$latest_old'))} {(DQ ($ VSub_Name '$latest_new'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4508 4522] ) ) } {(DQ ($ VSub_Name '$latest_new'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] spids: [16777215 4473] ) ] spids: [16777215 4541] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$branch'))})] action: [ (If arms: [ (if_arm cond: [(C {(rev_exists)} {(DQ (refs/heads/) ($ VSub_Name '$branch'))})] action: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(rev_is_descendant_of_branch)} {(DQ ($ VSub_Name '$latest_new'))} {(DQ ($ VSub_Name '$branch'))} ) ] negated: T ) ] action: [ (C {(die)} { (DQ ("Branch '") ($ VSub_Name '$branch') ("' is not an ancestor of commit '") ($ VSub_Name '$latest_new') ("'.") ) } ) ] spids: [16777215 4586] ) ] spids: [16777215 4600] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:action) op: Equal rhs: {(SQ <Updated>)} spids: [4603] ) ] spids: [4603] ) ] spids: [16777215 4568] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:action) op: Equal rhs: {(SQ <Created>)} spids: [4612] ) ] spids: [4612] ) ] spids: [4609 4618] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(update-ref)} {(-m)} {(SQ <'subtree split'>)} {(DQ (refs/heads/) ($ VSub_Name '$branch'))} {(DQ ($ VSub_Name '$latest_new'))} ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(say)} {(DQ ($ VSub_Name '$action') (" branch '") ($ VSub_Name '$branch') ("'"))} ) ] spids: [16777215 4555] ) ] spids: [16777215 4659] ) (C {(echo)} {(DQ ($ VSub_Name '$latest_new'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [3959] ) spids: [3954 3958] ) (FuncDef name: cmd_merge body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(rev-parse)} {($ VSub_Name '$default')} {(--revs-only)} {(DQ ($ VSub_At '$@'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4685 4697] ) } spids: [4684] ) ] spids: [4684] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(ensure_clean)}) (C {(set)} {(--)} {($ VSub_Name '$revs')}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-ne)} {(1)})] action: [ (C {(die)} { (DQ ("You must provide exactly one revision. Got: '") ($ VSub_Name '$revs') ("'") ) } ) ] spids: [16777215 4728] ) ] spids: [16777215 4740] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [4743] ) ] spids: [4743] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$squash'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:first_split) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(find_latest_squash)} {(DQ ($ VSub_Name '$dir'))})] ) left_token: <Left_CommandSub '$('> spids: [4766 4772] ) ) } spids: [4764] ) ] spids: [4764] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$first_split'))})] action: [ (C {(die)} { (DQ ("Can't squash-merge: '") ($ VSub_Name '$dir') ("' was never added.") ) } ) ] spids: [16777215 4787] ) ] spids: [16777215 4799] ) (C {(set)} {($ VSub_Name '$first_split')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old) op: Equal rhs: {($ VSub_Number '$1')} spids: [4807] ) ] spids: [4807] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {($ VSub_Number '$2')} spids: [4811] ) ] spids: [4811] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$sub'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$rev'))} ) ] action: [ (C {(say)} {(DQ ('Subtree is already at commit ') ($ VSub_Name '$rev') (.))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [16777215 4830] ) ] spids: [16777215 4847] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:new) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(new_squash_commit)} {(DQ ($ VSub_Name '$old'))} {(DQ ($ VSub_Name '$sub'))} {(DQ ($ VSub_Name '$rev'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [4851 4865] ) } spids: [4850] ) ] spids: [4850] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (C {(debug)} {(DQ ('New squash commit: ') ($ VSub_Name '$new'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Name '$new'))} spids: [4882] ) ] spids: [4882] ) ] spids: [16777215 4761] ) ] spids: [16777215 4888] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(git)} {(version)})]) left_token: <Left_CommandSub '$('> spids: [4893 4897] ) } spids: [4892] ) ] spids: [4892] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$version'))} {(EscapedLiteralPart token:<Lit_EscapedChar '\\<'>)} {(DQ ('git version 1.7'))} ) ] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$message'))})] action: [ (C {(git)} {(merge)} {(-s)} {(subtree)} {(--message) (Lit_Other '=') (DQ ($ VSub_Name '$message'))} {(DQ ($ VSub_Name '$rev'))} ) ] spids: [16777215 4929] ) ] else_action: [(C {(git)} {(merge)} {(-s)} {(subtree)} {(DQ ($ VSub_Name '$rev'))})] spids: [4951 4967] ) ] spids: [16777215 4915] ) ] else_action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$message'))})] action: [ (C {(git)} {(merge)} {(-Xsubtree) (Lit_Other '=') (DQ ($ VSub_Name '$prefix'))} {(--message) (Lit_Other '=') (DQ ($ VSub_Name '$message'))} {(DQ ($ VSub_Name '$rev'))} ) ] spids: [16777215 4984] ) ] else_action: [ (C {(git)} {(merge)} {(-Xsubtree) (Lit_Other '=') (DQ ($ VSub_Name '$prefix'))} {($ VSub_Name '$rev')} ) ] spids: [5010 5026] ) ] spids: [4970 5029] ) ] spids: [4681] ) spids: [4676 4680] ) (FuncDef name: cmd_pull body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-ne)} {(2)})] action: [(C {(die)} {(DQ ('You must provide <repository> <ref>'))})] spids: [16777215 5053] ) ] spids: [16777215 5063] ) (C {(ensure_clean)}) (C {(ensure_valid_ref_format)} {(DQ ($ VSub_Number '$2'))}) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(fetch)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revs) op:Equal rhs:{(FETCH_HEAD)} spids:[5091])] spids: [5091] ) (C {(set)} {(--)} {($ VSub_Name '$revs')}) (C {(cmd_merge)} {(DQ ($ VSub_At '$@'))}) ] spids: [5039] ) spids: [5034 5038] ) (FuncDef name: cmd_push body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-ne)} {(2)})] action: [(C {(die)} {(DQ ('You must provide <repository> <ref>'))})] spids: [16777215 5130] ) ] spids: [16777215 5140] ) (C {(ensure_valid_ref_format)} {(DQ ($ VSub_Number '$2'))}) (If arms: [ (if_arm cond: [(C {(test)} {(-e)} {(DQ ($ VSub_Name '$dir'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:repository) op: Equal rhs: {($ VSub_Number '$1')} spids: [5164] ) ] spids: [5164] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:refspec) op: Equal rhs: {($ VSub_Number '$2')} spids: [5168] ) ] spids: [5168] ) (C {(echo)} {(DQ ('git push using: '))} {(DQ ($ VSub_Name '$repository'))} {(DQ ($ VSub_Name '$refspec'))} ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:localrev) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(subtree)} {(split)} {(--prefix) (Lit_Other '=') (DQ ($ VSub_Name '$prefix'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [5188 5200] ) } spids: [5187] ) ] spids: [5187] ) (C {(die)}) ] ) (C {(git)} {(push)} {(DQ ($ VSub_Name '$repository'))} {(DQ ($ VSub_Name '$localrev')) (Lit_Other ':') (DQ (refs/heads/) ($ VSub_Name '$refspec')) } ) ] spids: [16777215 5161] ) ] else_action: [ (C {(die)} {(DQ ("'") ($ VSub_Name '$dir') ("' must already exist. Try 'git subtree add'."))} ) ] spids: [5225 5237] ) ] spids: [5116] ) spids: [5111 5115] ) (C {(DQ (cmd_) ($ VSub_Name '$command'))} {(DQ ($ VSub_At '$@'))}) ] )