(CommandList children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound "$#")} {(-eq)} {(0)})] action: [(C {(set)} {(--)} {(-h)})] spids: [-1 28] ) ] spids: [-1 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 children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$OPTS_SPEC"))}) (C {(git)} {(rev-parse)} {(--parseopt)} {(--)} {(DQ ($ VSub_At "$@"))}) ] negated: False ) (C {(echo)} {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] ) 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:{(SQ )} spids:[116])] spids: [116] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:branch) op:Equal rhs:{(SQ )} spids:[118])] spids: [118] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(SQ )} spids:[120])] spids: [120] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(SQ )} spids:[122])] spids: [122] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:onto) op:Equal rhs:{(SQ )} spids:[124])] spids: [124] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rejoin) op:Equal rhs:{(SQ )} spids:[126])] spids: [126] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignore_joins) op:Equal rhs:{(SQ )} spids:[128])] spids: [128] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:annotate) op:Equal rhs:{(SQ )} spids:[130])] spids: [130] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:squash) op:Equal rhs:{(SQ )} spids:[132])] spids: [132] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:message) op:Equal rhs:{(SQ )} spids:[134])] spids: [134] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:prefix) op:Equal rhs:{(SQ )} 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") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(DQ ($ VSub_Star "$*"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[172])] ) ] spids: [-1 158] ) ] spids: [-1 176] ) ] 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") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(DQ ($ VSub_Star "$*"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[214])] ) ] spids: [-1 200] ) ] spids: [-1 218] ) ] spids: [186] ) spids: [181 185] ) (FuncDef name: progress body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$quiet"))})] action: [ (SimpleCommand words: [ {(printf)} {(DQ ("%s") (EscapedLiteralPart token:<Lit_EscapedChar "\\r">))} {(DQ ($ VSub_Star "$*"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[256])] ) ] spids: [-1 242] ) ] spids: [-1 260] ) ] spids: [228] ) spids: [223 227] ) (FuncDef name: assert body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Pipeline children:[(C {(DQ ($ VSub_At "$@"))})] negated:True)] action: [(C {(die)} {(DQ ("assertion failed: "))} {(DQ ($ VSub_At "$@"))})] spids: [-1 282] ) ] spids: [-1 296] ) ] spids: [270] ) spids: [265 269] ) (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: [315] ) ] spids: [315] ) (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:[338])] spids: [338] ) ] spids: [334 335 342 -1] ) (case_arm pat_list: [{(-d)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(1)} spids:[349])] spids: [349] ) ] spids: [345 346 353 -1] ) (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: [360] ) ] spids: [360] ) (C {(shift)}) ] spids: [356 357 369 -1] ) (case_arm pat_list: [{(--no-annotate)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:annotate) op: Equal rhs: {(SQ )} spids: [376] ) ] spids: [376] ) ] spids: [372 373 379 -1] ) (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: [386] ) ] spids: [386] ) (C {(shift)}) ] spids: [382 383 395 -1] ) (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: [404 408] ) ) } spids: [402] ) ] spids: [402] ) (C {(shift)}) ] spids: [398 399 415 -1] ) (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: [422] ) ] spids: [422] ) (C {(shift)}) ] spids: [418 419 431 -1] ) (case_arm pat_list: [{(--no-prefix)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: {(SQ )} spids: [438] ) ] spids: [438] ) ] spids: [434 435 441 -1] ) (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: [448] ) ] spids: [448] ) (C {(shift)}) ] spids: [444 445 457 -1] ) (case_arm pat_list: [{(--no-onto)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:onto) op:Equal rhs:{(SQ )} spids:[464])] spids: [464] ) ] spids: [460 461 467 -1] ) (case_arm pat_list: [{(--rejoin)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rejoin) op:Equal rhs:{(1)} spids:[474])] spids: [474] ) ] spids: [470 471 478 -1] ) (case_arm pat_list: [{(--no-rejoin)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rejoin) op: Equal rhs: {(SQ )} spids: [485] ) ] spids: [485] ) ] spids: [481 482 488 -1] ) (case_arm pat_list: [{(--ignore-joins)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignore_joins) op: Equal rhs: {(1)} spids: [495] ) ] spids: [495] ) ] spids: [491 492 499 -1] ) (case_arm pat_list: [{(--no-ignore-joins)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignore_joins) op: Equal rhs: {(SQ )} spids: [506] ) ] spids: [506] ) ] spids: [502 503 509 -1] ) (case_arm pat_list: [{(--squash)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:squash) op:Equal rhs:{(1)} spids:[516])] spids: [516] ) ] spids: [512 513 520 -1] ) (case_arm pat_list: [{(--no-squash)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:squash) op: Equal rhs: {(SQ )} spids: [527] ) ] spids: [527] ) ] spids: [523 524 530 -1] ) (case_arm pat_list: [{(--)}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [533 534 540 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(die)} {(DQ ("Unexpected option: ") ($ VSub_Name "$opt"))})] spids: [543 544 555 -1] ) ] spids: [325 331 558] ) ] spids: [312 560] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:command) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [563] ) ] spids: [563] ) (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:{(SQ )} spids:[587])] spids: [587] ) ] spids: [579 584 590 -1] ) (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: [598] ) ] spids: [598] ) ] spids: [592 595 604 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(die)} {(DQ ("Unknown command '") ($ VSub_Name "$command") ("'"))})] spids: [606 607 619 -1] ) ] spids: [571 577 621] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$prefix"))})] action: [(C {(die)} {(DQ ("You must provide the --prefix option."))})] spids: [-1 634] ) ] spids: [-1 643] ) (Case to_match: {(DQ ($ VSub_Name "$command"))} arms: [ (case_arm pat_list: [{(add)}] action: [ (AndOr children: [ (C {(test)} {(-e)} {(DQ ($ VSub_Name "$prefix"))}) (C {(die)} {(DQ ("prefix '") ($ VSub_Name "$prefix") ("' already exists."))}) ] op_id: Op_DAmp ) ] spids: [654 655 678 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (AndOr children: [ (C {(test)} {(-e)} {(DQ ($ VSub_Name "$prefix"))}) (C {(die)} {(DQ ("'") ($ VSub_Name "$prefix") ("' does not exist; use 'git subtree add'"))} ) ] op_id: Op_DPipe ) ] spids: [680 681 704 -1] ) ] spids: [646 652 706] ) (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: [711 718] ) ) } spids: [709] ) ] spids: [709] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name "$command"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (pull))}) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name "$command"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (add))} ) (C {(test)} {(DQ ($ VSub_Name "$command"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (push))} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] action: [ (AndOr 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: [773 785] ) } spids: [772] ) ] spids: [772] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr 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: [795 807] ) } spids: [794] ) ] spids: [794] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$dirs"))})] action: [(C {(die)} {(DQ ("Error: Use --prefix instead of bare filenames."))})] spids: [-1 827] ) ] spids: [-1 837] ) ] spids: [-1 769] ) ] spids: [-1 839] ) (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: [893] ) ] spids: [893] ) (AndOr children: [ (C {(rm)} {(-rf)} {(DQ ($ VSub_Name "$cachedir"))}) (C {(die)} {(DQ ("Can't delete old cachedir: ") ($ VSub_Name "$cachedir"))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$cachedir"))}) (C {(die)} {(DQ ("Can't create new cachedir: ") ($ VSub_Name "$cachedir"))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$cachedir") (/notree))}) (C {(die)} {(DQ ("Can't create new cachedir: ") ($ VSub_Name "$cachedir") (/notree))}) ] op_id: Op_DPipe ) (SimpleCommand words: [{(debug)} {(DQ ("Using cachedir: ") ($ VSub_Name "$cachedir"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[967])] ) ] spids: [890] ) spids: [885 889] ) (FuncDef name: cache_get body: (BraceGroup children: [ (ForEach iter_name: oldrev iter_words: [{(DQ ($ VSub_At "$@"))}] do_arg_iter: False 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_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$cachedir") (/) ($ VSub_Name "$oldrev"))} spids: [1015] ) ] ) (C {(echo)} {($ VSub_Name "$newrev")}) ] spids: [-1 1008] ) ] spids: [-1 1028] ) ] spids: [992 1031] ) spids: [986 -1] ) ] spids: [978] ) spids: [973 977] ) (FuncDef name: cache_miss body: (BraceGroup children: [ (ForEach iter_name: oldrev iter_words: [{(DQ ($ VSub_At "$@"))}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name "$cachedir") (/) ($ VSub_Name "$oldrev"))} ) ] negated: True ) ] action: [(C {(echo)} {($ VSub_Name "$oldrev")})] spids: [-1 1073] ) ] spids: [-1 1081] ) ] spids: [1055 1084] ) spids: [1049 -1] ) ] spids: [1041] ) spids: [1036 1040] ) (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: [1098 1104] ) } spids: [1097] ) ] spids: [1097] ) (ForEach iter_name: miss iter_words: [{($ VSub_Name "$missed")}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(test)} {(-r)} {(DQ ($ VSub_Name "$cachedir") (/notree/) ($ VSub_Name "$miss"))} ) ] negated: True ) ] action: [(C {(debug)} {(DQ (" incorrect order: ") ($ VSub_Name "$miss"))})] spids: [-1 1134] ) ] spids: [-1 1145] ) ] spids: [1116 1148] ) spids: [1112 -1] ) ] spids: [1094] ) spids: [1089 1093] ) (FuncDef name: set_notree body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ (1))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$cachedir") (/notree/) ($ VSub_Number "$1"))} spids: [1167] ) ] ) ] spids: [1158] ) spids: [1153 1157] ) (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: [1186] ) ] spids: [1186] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newrev) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [1192] ) ] spids: [1192] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name "$oldrev"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (latest_old))} ) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name "$oldrev"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (latest_new))} ) (C {(test)} {(-e)} {(DQ ($ VSub_Name "$cachedir") (/) ($ VSub_Name "$oldrev"))} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] action: [ (C {(die)} {(DQ ("cache for ") ($ VSub_Name "$oldrev") (" already exists!"))}) ] spids: [-1 1243] ) ] spids: [-1 1255] ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$newrev"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$cachedir") (/) ($ VSub_Name "$oldrev"))} spids: [1264] ) ] ) ] spids: [1183] ) spids: [1178 1182] ) (FuncDef name: rev_exists body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(git)} {(rev-parse)} {(DQ ($ VSub_Number "$1"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [1292] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1295] ) ] ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 1299] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1307 1315] ) ] spids: [1279] ) spids: [1274 1278] ) (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: [1328] ) ] spids: [1328] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:branch) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [1334] ) ] spids: [1334] ) (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: [1341 1349] ) } spids: [1340] ) ] spids: [1340] ) (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: [1353 1368] ) } spids: [1352] ) ] spids: [1352] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$match"))})] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 1383] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1391 1399] ) ] spids: [1325] ) spids: [1320 1324] ) (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: [-1 1431] ) ] spids: [-1 1443] ) ] spids: [1418] ) spids: [1413 1417] ) (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: [1465] ) ] spids: [1465] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sq) op:Equal rhs:{(SQ )} spids:[1471])] spids: [1471] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:main) op:Equal rhs:{(SQ )} spids:[1474])] spids: [1474] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sub) op:Equal rhs:{(SQ )} spids:[1477])] spids: [1477] ) (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)} ) (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: [1559] ) ] spids: [1559] ) ] spids: [1555 1556 1565 -1] ) (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: [1573] ) ] spids: [1573] ) ] spids: [1568 1570 1579 -1] ) (case_arm pat_list: [{(git-subtree-split) (Lit_Other ":")}] action: [ (AndOr 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: [1589 1598] ) ) } spids: [1587] ) ] spids: [1587] ) (C {(die)} { (DQ ("could not rev-parse split hash ") ($ VSub_Name "$b") (" from commit ") ($ VSub_Name "$sq") ) } ) ] op_id: Op_DPipe ) ] spids: [1582 1584 1614 -1] ) (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: [1657] ) ] spids: [1657] ) ] spids: [-1 1646] ) ] spids: [-1 1663] ) (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: [-1 1632] ) ] spids: [-1 1690] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sq) op: Equal rhs: {(SQ )} spids: [1693] ) ] spids: [1693] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(SQ )} spids: [1696] ) ] spids: [1696] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {(SQ )} spids: [1699] ) ] spids: [1699] ) ] spids: [1617 1618 1702 -1] ) ] spids: [1546 1552 1705] ) ] spids: [1519 1708] ) ) ] negated: False ) ] spids: [1453] ) spids: [1448 1452] ) (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: [1728] ) ] spids: [1728] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:revs) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [1734] ) ] spids: [1734] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:main) op:Equal rhs:{(SQ )} spids:[1740])] spids: [1740] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sub) op:Equal rhs:{(SQ )} spids:[1743])] spids: [1743] ) (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")} ) (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: [1801] ) ] spids: [1801] ) ] spids: [1797 1798 1807 -1] ) (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: [1815] ) ] spids: [1815] ) ] spids: [1810 1812 1821 -1] ) (case_arm pat_list: [{(git-subtree-split) (Lit_Other ":")}] action: [ (AndOr 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: [1831 1840] ) ) } spids: [1829] ) ] spids: [1829] ) (C {(die)} { (DQ ("could not rev-parse split hash ") ($ VSub_Name "$b") (" from commit ") ($ VSub_Name "$sq") ) } ) ] op_id: Op_DPipe ) ] spids: [1824 1826 1856 -1] ) (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: [-1 1891] ) ] spids: [-1 1919] ) (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: [-1 1941] ) ] spids: [-1 1982] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:main) op: Equal rhs: {(SQ )} spids: [1985] ) ] spids: [1985] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {(SQ )} spids: [1988] ) ] spids: [1988] ) ] spids: [1859 1860 1991 -1] ) ] spids: [1788 1794 1994] ) ] spids: [1785 1997] ) ) ] negated: False ) ] spids: [1718] ) spids: [1713 1717] ) (FuncDef name: copy_commit body: (BraceGroup children: [ (C {(debug)} {(copy_commit)} {(DQ ("{") ($ VSub_Number "$1") ("}"))} {(DQ ("{") ($ VSub_Number "$2") ("}"))} {(DQ ("{") ($ VSub_Number "$3") ("}"))} ) (AndOr 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: [2120 2137] ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Number "$2"))} {($ VSub_Number "$3")} ) ] negated: False ) ] ) spids: [2062 2156] ) ] negated: False ) (C {(die)} {(DQ ("Can't copy commit ") ($ VSub_Number "$1"))}) ] op_id: Op_DPipe ) ] spids: [2007] ) spids: [2002 2006] ) (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: [2178] ) ] spids: [2178] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_old) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2184] ) ] spids: [2184] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_new) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [2190] ) ] spids: [2190] ) (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: [2210] ) ] spids: [2210] ) ] spids: [-1 2207] ) ] 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: [2219] ) ] spids: [2219] ) ] spids: [2216 2229] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: -1 body: { (DQ ($ 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") ) } do_expansion: True here_end: EOF was_filled: True spids: [2234] ) ] ) ] spids: [2175] ) spids: [2170 2174] ) (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: [-1 2271] ) ] else_action: [ (C {(echo)} { (DQ ("Merge commit '") ($ VSub_Number "$1") ("' as '") ($ VSub_Number "$2") ("'")) } ) ] spids: [2281 2295] ) ] spids: [2257] ) spids: [2252 2256] ) (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: [2308] ) ] spids: [2308] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_old) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2314] ) ] spids: [2314] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latest_new) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [2320] ) ] spids: [2320] ) (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: [2340] ) ] spids: [2340] ) ] spids: [-1 2337] ) ] 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: [2349] ) ] spids: [2349] ) ] spids: [2346 2359] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: -1 body: { (DQ ($ 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") ) } do_expansion: True here_end: EOF was_filled: True spids: [2364] ) ] ) ] spids: [2305] ) spids: [2300 2304] ) (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: [2390] ) ] spids: [2390] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldsub) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2396] ) ] spids: [2396] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newsub) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [2402] ) ] spids: [2402] ) (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: [2409 2419] ) } spids: [2408] ) ] spids: [2408] ) (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: [2438 2448] ) } spids: [2437] ) ] spids: [2437] ) (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: [-1 2434] ) ] else_action: [ (C {(echo)} { (DQ ("Squashed '") ($ VSub_Name "$dir") ("/' content from commit ") ($ VSub_Name "$newsub_short") ) } ) ] spids: [2504 2517] ) (C {(echo)}) (C {(echo)} {(DQ ("git-subtree-dir: ") ($ VSub_Name "$dir"))}) (C {(echo)} {(DQ ("git-subtree-split: ") ($ VSub_Name "$newsub"))}) ] spids: [2387] ) spids: [2382 2386] ) (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: [2550] ) ] spids: [2550] ) (AndOr children: [ (C {(git)} {(log)} {(-1)} {(--pretty) (Lit_Other "=") (format) (Lit_Other ":") (SQ <"%T">)} {(DQ ($ VSub_Name "$commit"))} {(--)} ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [2547] ) spids: [2542 2546] ) (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: [2593] ) ] spids: [2593] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2599] ) ] spids: [2599] ) (Pipeline children: [ (C {(git)} {(ls-tree)} {(DQ ($ VSub_Name "$commit"))} {(--)} {(DQ ($ VSub_Name "$dir"))}) (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 children: [ (C {(test)} {(DQ ($ VSub_Name "$type"))} {(Lit_Other "=")} {(DQ (commit))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] op_id: Op_DAmp ) (C {(echo)} {($ VSub_Name "$tree")}) (ControlFlow token:<ControlFlow_Break break>) ] spids: [2635 2708] ) ) ] negated: False ) ] spids: [2590] ) spids: [2585 2589] ) (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: [2721] ) ] spids: [2721] ) (C {(shift)}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound "$#")} {(-ne)} {(1)})] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 2739] ) ] 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: [2754 2758] ) } spids: [2753] ) ] spids: [2753] ) (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: [-1 2777] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [2788 2799] ) ] spids: [2750 2802] ) ] spids: [2718] ) spids: [2713 2717] ) (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: [2815] ) ] spids: [2815] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldsub) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2821] ) ] spids: [2821] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newsub) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [2827] ) ] spids: [2827] ) (AndOr 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: [2834 2838] ) } spids: [2833] ) ] spids: [2833] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$old"))})] action: [ (AndOr 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: False ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [-1 2858] ) ] else_action: [ (AndOr children: [ (Pipeline children: [ (C {(squash_msg)} {(DQ ($ VSub_Name "$dir"))} {(DQ )} {(DQ ($ VSub_Name "$newsub"))} ) (C {(git)} {(commit-tree)} {(DQ ($ VSub_Name "$tree"))}) ] negated: False ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [2899 2933] ) ] spids: [2812] ) spids: [2807 2811] ) (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: [2946] ) ] spids: [2946] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tree) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [2952] ) ] spids: [2952] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newparents) op: Equal rhs: {(DQ ($ VSub_Number "$3"))} spids: [2958] ) ] spids: [2958] ) (C {(assert)} {(test)} {(-n)} {(DQ ($ VSub_Name "$tree"))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:identical) op:Equal rhs:{(SQ )} spids:[2976])] spids: [2976] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:nonidentical) op:Equal rhs:{(SQ )} spids:[2979])] spids: [2979] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:p) op:Equal rhs:{(SQ )} spids:[2982])] spids: [2982] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:gotparents) op:Equal rhs:{(SQ )} spids:[2985])] spids: [2985] ) (ForEach iter_name: parent iter_words: [{($ VSub_Name "$newparents")}] do_arg_iter: False body: (DoGroup children: [ (AndOr 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: [3001 3005] ) } spids: [3000] ) ] spids: [3000] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name "$ptree"))}) (ControlFlow token:<ControlFlow_Continue continue>) ] op_id: Op_DAmp ) (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: [3049] ) ] spids: [3049] ) ] spids: [-1 3042] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nonidentical) op: Equal rhs: {(DQ ($ VSub_Name "$parent"))} spids: [3058] ) ] spids: [3058] ) ] spids: [3055 3064] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:is_new) op:Equal rhs:{(1)} spids:[3076])] spids: [3076] ) (ForEach iter_name: gp iter_words: [{($ VSub_Name "$gotparents")}] do_arg_iter: False 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: {(SQ )} spids: [3110] ) ] spids: [3110] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [-1 3107] ) ] spids: [-1 3116] ) ] spids: [3089 3119] ) spids: [3085 -1] ) (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: [3136] ) ] spids: [3136] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:p) op: Equal rhs: {(DQ ($ VSub_Name "$p") (" -p ") ($ VSub_Name "$parent"))} spids: [3144] ) ] spids: [3144] ) ] spids: [-1 3133] ) ] spids: [-1 3152] ) ] spids: [2997 3155] ) spids: [2993 -1] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:copycommit) op:Equal rhs:{(SQ )} spids:[3159])] spids: [3159] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name "$identical"))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name "$nonidentical"))}) ] op_id: Op_DAmp ) ] 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: [3187 3197] ) } spids: [3186] ) ] spids: [3186] ) (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: [3220] ) ] spids: [3220] ) ] spids: [-1 3213] ) ] spids: [-1 3224] ) ] spids: [-1 3183] ) ] spids: [-1 3227] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name "$identical"))}) (C {(test)} {(-z)} {(DQ ($ VSub_Name "$copycommit"))}) ] op_id: Op_DAmp ) ] action: [(C {(echo)} {($ VSub_Name "$identical")})] spids: [-1 3251] ) ] else_action: [ (AndOr children: [ (C {(copy_commit)} {(DQ ($ VSub_Name "$rev"))} {(DQ ($ VSub_Name "$tree"))} {(DQ ($ VSub_Name "$p"))} ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [3259 3283] ) ] spids: [2943] ) spids: [2938 2942] ) (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_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[3310])] ) ] negated: True ) ] action: [(C {(die)} {(DQ ("Working tree has modifications. Cannot add."))})] spids: [-1 3314] ) ] spids: [-1 3324] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [{(git)} {(diff-index)} {(--cached)} {(HEAD)} {(--exit-code)} {(--quiet)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[3343])] ) ] negated: True ) ] action: [(C {(die)} {(DQ ("Index has modifications. Cannot add."))})] spids: [-1 3347] ) ] spids: [-1 3357] ) ] spids: [3293] ) spids: [3288 3292] ) (FuncDef name: ensure_valid_ref_format body: (BraceGroup children: [ (AndOr children: [ (C {(git)} {(check-ref-format)} {(DQ (refs/heads/) ($ VSub_Number "$1"))}) (C {(die)} {(DQ ("'") ($ VSub_Number "$1") ("' does not look like a ref"))}) ] op_id: Op_DPipe ) ] spids: [3367] ) spids: [3362 3366] ) (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: [-1 3412] ) ] spids: [-1 3424] ) (C {(ensure_clean)}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound "$#")} {(-eq)} {(1)})] action: [ (AndOr children: [ (SimpleCommand words: [ {(git)} {(rev-parse)} {(-q)} {(--verify)} {(DQ ($ VSub_Number "$1") ("^{commit}"))} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [3459] ) ] ) (C {(die)} {(DQ ("'") ($ VSub_Number "$1") ("' does not refer to a commit"))}) ] op_id: Op_DPipe ) (C {(cmd_add_commit)} {(DQ ($ VSub_At "$@"))}) ] spids: [-1 3443] ) (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: [3483 3494] ) ] else_action: [ (C {(say)} {(DQ ("error: parameters were '") ($ VSub_At "$@") ("'"))}) (C {(die)} {(DQ ("Provide either a commit or a repository and commit."))}) ] spids: [3532 3551] ) ] spids: [3398] ) spids: [3393 3397] ) (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: [3575] ) ] spids: [3575] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:refspec) op: Equal rhs: {($ VSub_Number "$2")} spids: [3579] ) ] spids: [3579] ) (AndOr children: [ (C {(git)} {(fetch)} {(DQ ($ VSub_At "$@"))}) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revs) op:Equal rhs:{(FETCH_HEAD)} spids:[3598])] spids: [3598] ) (C {(set)} {(--)} {($ VSub_Name "$revs")}) (C {(cmd_add_commit)} {(DQ ($ VSub_At "$@"))}) ] spids: [3561] ) spids: [3556 3560] ) (FuncDef name: cmd_add_commit body: (BraceGroup children: [ (AndOr 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: [3627 3639] ) } spids: [3626] ) ] spids: [3626] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (C {(set)} {(--)} {($ VSub_Name "$revs")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [3655] ) ] spids: [3655] ) (C {(debug)} {(DQ ("Adding ") ($ VSub_Name "$dir") (" as '") ($ VSub_Name "$rev") ("'..."))}) (AndOr children: [ (C {(git)} {(read-tree)} {(--prefix) (Lit_Other "=") (DQ ($ VSub_Name "$dir"))} {($ VSub_Name "$rev")} ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(git)} {(checkout)} {(--)} {(DQ ($ VSub_Name "$dir"))}) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr 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: [3710 3714] ) } spids: [3709] ) ] spids: [3709] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr 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: [3725 3731] ) } spids: [3724] ) ] spids: [3724] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name "$headrev"))}) (C {(test)} {(DQ ($ VSub_Name "$headrev"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$rev"))} ) ] op_id: Op_DAmp ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:headp) op: Equal rhs: {(DQ ("-p ") ($ VSub_Name "$headrev"))} spids: [3769] ) ] spids: [3769] ) ] spids: [-1 3766] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:headp) op:Equal rhs:{(SQ )} spids:[3779])] spids: [3779] ) ] spids: [3776 3782] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$squash"))})] action: [ (AndOr 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: [3801 3813] ) } spids: [3800] ) ] spids: [3800] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (AndOr 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: False ) ] ) left_token: <Left_CommandSub "$("> spids: [3823 3852] ) } spids: [3822] ) ] spids: [3822] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [-1 3797] ) ] else_action: [ (AndOr 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: [3865 3871] ) } spids: [3864] ) ] spids: [3864] ) (AndOr children: [ (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: False ) ] ) left_token: <Left_CommandSub "$("> spids: [3877 3908] ) } spids: [3876] ) ] spids: [3876] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) ] spids: [3861 3917] ) (AndOr children: [ (C {(git)} {(reset)} {(DQ ($ VSub_Name "$commit"))}) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (C {(say)} {(DQ ("Added dir '") ($ VSub_Name "$dir") ("'"))}) ] spids: [3623] ) spids: [3618 3622] ) (FuncDef name: cmd_split body: (BraceGroup children: [ (C {(debug)} {(DQ ("Splitting ") ($ VSub_Name "$dir") (...))}) (AndOr children: [(C {(cache_setup)}) (C {(exit)} {($ VSub_QMark "$?")})] op_id: Op_DPipe ) (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")}) (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: [4013 4043] ) ) ] negated: False ) ] spids: [-1 3985] ) ] spids: [-1 4046] ) (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: {(SQ )} spids: [4064] ) ] spids: [4064] ) ] spids: [-1 4061] ) ] 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: [4072 4082] ) ) } spids: [4070] ) ] spids: [4070] ) ] spids: [4067 4086] ) (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: [4102] ) ] spids: [4102] ) (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: False ) ] ) left_token: <Left_CommandSub "$("> spids: [4109 4121] ) } spids: [4108] ) ] spids: [4108] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revcount) op:Equal rhs:{(0)} spids:[4124])] spids: [4124] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:createcount) op:Equal rhs:{(0)} spids:[4128])] spids: [4128] ) (AndOr children: [ (Pipeline children: [ (C {(eval)} {(DQ ($ VSub_Name "$grl"))}) (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: [4154 4161] ) } spids: [4153] ) ] spids: [4153] ) (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: [4185 4191] ) } spids: [4184] ) ] spids: [4184] ) (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: [-1 4205] ) ] spids: [-1 4219] ) (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: [4223 4230] ) } spids: [4222] ) ] spids: [4222] ) (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: [4242 4246] ) } spids: [4241] ) ] spids: [4241] ) (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: [4259 4269] ) } spids: [4258] ) ] spids: [4258] ) (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: [-1 4327] ) ] spids: [-1 4341] ) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [-1 4306] ) ] spids: [-1 4347] ) (AndOr 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: [4352 4366] ) } spids: [4351] ) ] spids: [4351] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (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: [4150 4412] ) ) ] negated: False ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (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: [4423 4427] ) } spids: [4422] ) ] spids: [4422] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$latest_new"))})] action: [(C {(die)} {(DQ ("No new revisions were found"))})] spids: [-1 4441] ) ] spids: [-1 4451] ) (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: [4477 4481] ) } spids: [4476] ) ] spids: [4476] ) (AndOr 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: [4501 4515] ) ) } {(DQ ($ VSub_Name "$latest_new"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[4524])] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) ] spids: [-1 4466] ) ] spids: [-1 4534] ) (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: True ) ] action: [ (C {(die)} { (DQ ("Branch '") ($ VSub_Name "$branch") ("' is not an ancestor of commit '") ($ VSub_Name "$latest_new") ("'.") ) } ) ] spids: [-1 4579] ) ] spids: [-1 4593] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:action) op: Equal rhs: {(SQ <Updated>)} spids: [4596] ) ] spids: [4596] ) ] spids: [-1 4561] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:action) op: Equal rhs: {(SQ <Created>)} spids: [4605] ) ] spids: [4605] ) ] spids: [4602 4611] ) (AndOr children: [ (C {(git)} {(update-ref)} {(-m)} {(SQ <"subtree split">)} {(DQ (refs/heads/) ($ VSub_Name "$branch"))} {(DQ ($ VSub_Name "$latest_new"))} ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (C {(say)} {(DQ ($ VSub_Name "$action") (" branch '") ($ VSub_Name "$branch") ("'"))} ) ] spids: [-1 4548] ) ] spids: [-1 4652] ) (C {(echo)} {(DQ ($ VSub_Name "$latest_new"))}) (C {(exit)} {(0)}) ] spids: [3952] ) spids: [3947 3951] ) (FuncDef name: cmd_merge body: (BraceGroup children: [ (AndOr 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: [4678 4690] ) } spids: [4677] ) ] spids: [4677] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (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: [-1 4721] ) ] spids: [-1 4733] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rev) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [4736] ) ] spids: [4736] ) (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: [4759 4765] ) ) } spids: [4757] ) ] spids: [4757] ) (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: [-1 4780] ) ] spids: [-1 4792] ) (C {(set)} {($ VSub_Name "$first_split")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old) op: Equal rhs: {($ VSub_Number "$1")} spids: [4800] ) ] spids: [4800] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sub) op: Equal rhs: {($ VSub_Number "$2")} spids: [4804] ) ] spids: [4804] ) (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") (.))}) (C {(exit)} {(0)}) ] spids: [-1 4823] ) ] spids: [-1 4840] ) (AndOr 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: [4844 4858] ) } spids: [4843] ) ] spids: [4843] ) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (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: [4875] ) ] spids: [4875] ) ] spids: [-1 4754] ) ] spids: [-1 4881] ) (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: [4886 4890] ) } spids: [4885] ) ] spids: [4885] ) (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: [-1 4922] ) ] else_action: [(C {(git)} {(merge)} {(-s)} {(subtree)} {(DQ ($ VSub_Name "$rev"))})] spids: [4944 4960] ) ] spids: [-1 4908] ) ] 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: [-1 4977] ) ] else_action: [ (C {(git)} {(merge)} {(-Xsubtree) (Lit_Other "=") (DQ ($ VSub_Name "$prefix"))} {($ VSub_Name "$rev")} ) ] spids: [5003 5019] ) ] spids: [4963 5022] ) ] spids: [4674] ) spids: [4669 4673] ) (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: [-1 5046] ) ] spids: [-1 5056] ) (C {(ensure_clean)}) (C {(ensure_valid_ref_format)} {(DQ ($ VSub_Number "$2"))}) (AndOr children: [ (C {(git)} {(fetch)} {(DQ ($ VSub_At "$@"))}) (C {(exit)} {($ VSub_QMark "$?")}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:revs) op:Equal rhs:{(FETCH_HEAD)} spids:[5084])] spids: [5084] ) (C {(set)} {(--)} {($ VSub_Name "$revs")}) (C {(cmd_merge)} {(DQ ($ VSub_At "$@"))}) ] spids: [5032] ) spids: [5027 5031] ) (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: [-1 5123] ) ] spids: [-1 5133] ) (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: [5157] ) ] spids: [5157] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:refspec) op: Equal rhs: {($ VSub_Number "$2")} spids: [5161] ) ] spids: [5161] ) (C {(echo)} {(DQ ("git push using: "))} {(DQ ($ VSub_Name "$repository"))} {(DQ ($ VSub_Name "$refspec"))} ) (AndOr 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: [5181 5193] ) } spids: [5180] ) ] spids: [5180] ) (C {(die)}) ] op_id: Op_DPipe ) (C {(git)} {(push)} {(DQ ($ VSub_Name "$repository"))} {(DQ ($ VSub_Name "$localrev")) (Lit_Other ":") (DQ (refs/heads/) ($ VSub_Name "$refspec")) } ) ] spids: [-1 5154] ) ] else_action: [ (C {(die)} {(DQ ("'") ($ VSub_Name "$dir") ("' must already exist. Try 'git subtree add'."))} ) ] spids: [5218 5230] ) ] spids: [5109] ) spids: [5104 5108] ) (C {(DQ (cmd_) ($ VSub_Name "$command"))} {(DQ ($ VSub_At "$@"))}) ] )