(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USAGE) op: Equal rhs: {(DQ ('[-a] [-r] [-m] [-t] [-n] [-b <newname>] <name>'))} spids: [4] ) ] spids: [4] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LONG_USAGE) op: Equal rhs: { (DQ ('git-resurrect attempts to find traces of a branch tip\n') ('called <name>, and tries to resurrect it. Currently, the reflog is\n') ('searched for checkout messages, and with -r also merge messages. With\n') ('-m and -t, the history of all refs is scanned for Merge <name> into\n') ('other/Merge <other> into <name> (respectively) commit subjects, which\n') ("is rather slow but allows you to resurrect other people's topic\n") (branches.) ) } spids: [9] ) ] spids: [9] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[21])] spids: [21] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTIONS_STUCKLONG) op:Equal rhs:{(SQ )} spids:[23])] spids: [23] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTIONS_SPEC) op: Equal rhs: { (DQ ('git resurrect ') ($ VSub_Name '$USAGE') ('\n') ('--\n') ('b,branch= save branch as <newname> instead of <name>\n') ('a,all same as -l -r -m -t\n') ('k,keep-going full rev-list scan (instead of first match)\n') ('l,reflog scan reflog for checkouts (enabled by default)\n') ('r,reflog-merges scan for merges recorded in reflog\n') ('m,merges scan for merges into other branches (slow)\n') ('t,merge-targets scan for merges of other branches into <name>\n') ("n,dry-run don't recreate the branch") ) } spids: [25] ) ] spids: [25] ) (C {(.)} {(git-sh-setup)}) (FuncDef name: search_reflog body: (BraceGroup children: [ (SimpleCommand words: [ {(sed)} {(-ne)} {(SQ <'s~^\\([^ ]*\\) .*\\tcheckout: moving from '>) (DQ ($ VSub_Number '$1')) (SQ <' .*~\\1~p'>) } ] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)} spids: [72] ) ] ) ] spids: [53] ) spids: [48 52] ) (FuncDef name: search_reflog_merges body: (BraceGroup children: [ (C {(git)} {(rev-parse)} { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-ne)} {(SQ <'s~^[^ ]* \\([^ ]*\\) .*\\tmerge '>) (DQ ($ VSub_Number '$1')) (SQ <':.*~\\1^2~p'>) } ] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)} spids: [113] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [94 121] ) } ) ] spids: [87] ) spids: [82 86] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_x40) op: Equal rhs: {(DQ ('[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'))} spids: [126] ) ] spids: [126] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_x40) op: Equal rhs: { (DQ ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ) } spids: [131] ) ] spids: [131] ) (FuncDef name: search_merges body: (BraceGroup children: [ (Pipeline children: [ (C {(git)} {(rev-list)} {(--all)} {(--grep) (Lit_Other '=') (DQ ("Merge branch '") ($ VSub_Number '$1') ("'"))} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%P %s'))} ) (C {(sed)} {(-ne)} { (DQ ('/^') ($ VSub_Name '$_x40') (' ') (Lit_Other '\\') ('(') ($ VSub_Name '$_x40') (Lit_Other '\\') (') Merge .*/ {s//') (Lit_Other '\\') ('1/p;') ($ VSub_Name '$early_exit') ('}') ) } ) ] negated: False ) ] spids: [149] ) spids: [144 148] ) (FuncDef name: search_merge_targets body: (BraceGroup children: [ (Pipeline children: [ (C {(git)} {(rev-list)} {(--all)} {(--grep) (Lit_Other '=') (DQ ("Merge branch '[^']*' into ") ($ VSub_Name '$branch') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ) } {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%H %s'))} {(--all)} ) (C {(sed)} {(-ne)} { (DQ ('/^') (Lit_Other '\\') ('(') ($ VSub_Name '$_x40') (Lit_Other '\\') (') Merge .*/ {s//') (Lit_Other '\\') ('1/p;') ($ VSub_Name '$early_exit') ('} ') ) } ) ] negated: False ) ] spids: [206] ) spids: [201 205] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dry_run) op:Equal rhs:{(SQ )} spids:[258])] spids: [258] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:early_exit) op:Equal rhs:{(q)} spids:[260])] spids: [260] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:scan_reflog) op:Equal rhs:{(t)} spids:[263])] spids: [263] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:scan_reflog_merges) op:Equal rhs:{(SQ )} spids:[266])] spids: [266] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:scan_merges) op:Equal rhs:{(SQ )} spids:[268])] spids: [268] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:scan_merge_targets) op:Equal rhs:{(SQ )} spids:[270])] spids: [270] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:new_name) op:Equal rhs:{(SQ )} spids:[272])] spids: [272] ) (While cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(KW_Bang '!') (Lit_Other '=')} {(0)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-b)} {(--branch)}] action: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:new_name) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [310] ) ] spids: [310] ) ] spids: [301 304 316 16777215] ) (case_arm pat_list: [{(-n)} {(--dry-run)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dry_run) op:Equal rhs:{(t)} spids:[325])] spids: [325] ) ] spids: [319 322 329 16777215] ) (case_arm pat_list: [{(--no-dry-run)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dry_run) op: Equal rhs: {(SQ )} spids: [336] ) ] spids: [336] ) ] spids: [332 333 339 16777215] ) (case_arm pat_list: [{(-k)} {(--keep-going)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:early_exit) op: Equal rhs: {(SQ )} spids: [348] ) ] spids: [348] ) ] spids: [342 345 351 16777215] ) (case_arm pat_list: [{(--no-keep-going)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:early_exit) op: Equal rhs: {(q)} spids: [358] ) ] spids: [358] ) ] spids: [354 355 362 16777215] ) (case_arm pat_list: [{(-m)} {(--merges)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merges) op: Equal rhs: {(t)} spids: [371] ) ] spids: [371] ) ] spids: [365 368 375 16777215] ) (case_arm pat_list: [{(--no-merges)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merges) op: Equal rhs: {(SQ )} spids: [382] ) ] spids: [382] ) ] spids: [378 379 385 16777215] ) (case_arm pat_list: [{(-l)} {(--reflog)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog) op: Equal rhs: {(t)} spids: [394] ) ] spids: [394] ) ] spids: [388 391 398 16777215] ) (case_arm pat_list: [{(--no-reflog)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog) op: Equal rhs: {(SQ )} spids: [405] ) ] spids: [405] ) ] spids: [401 402 408 16777215] ) (case_arm pat_list: [{(-r)} {(--reflog_merges)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog_merges) op: Equal rhs: {(t)} spids: [417] ) ] spids: [417] ) ] spids: [411 414 421 16777215] ) (case_arm pat_list: [{(--no-reflog_merges)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog_merges) op: Equal rhs: {(SQ )} spids: [428] ) ] spids: [428] ) ] spids: [424 425 431 16777215] ) (case_arm pat_list: [{(-t)} {(--merge-targets)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merge_targets) op: Equal rhs: {(t)} spids: [440] ) ] spids: [440] ) ] spids: [434 437 444 16777215] ) (case_arm pat_list: [{(--no-merge-targets)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merge_targets) op: Equal rhs: {(SQ )} spids: [451] ) ] spids: [451] ) ] spids: [447 448 454 16777215] ) (case_arm pat_list: [{(-a)} {(--all)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog) op: Equal rhs: {(t)} spids: [463] ) ] spids: [463] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_reflog_merges) op: Equal rhs: {(t)} spids: [467] ) ] spids: [467] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merges) op: Equal rhs: {(t)} spids: [471] ) ] spids: [471] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scan_merge_targets) op: Equal rhs: {(t)} spids: [475] ) ] spids: [475] ) ] spids: [457 460 479 16777215] ) (case_arm pat_list: [{(--)}] action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)] spids: [482 483 492 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [495 496 502 16777215] ) ] spids: [292 298 505] ) (C {(shift)}) ] spids: [289 510] ) ) (AndOr children: [(C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(1)}) (C {(usage)})] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:all_strategies) op: Equal rhs: { (DQ ($ VSub_Name '$scan_reflog') ($ VSub_Name '$scan_reflog_merges') ($ VSub_Name '$scan_merges') ($ VSub_Name '$scan_merge_targets') ) } spids: [528] ) ] spids: [528] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$all_strategies'))}) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ('must enable at least one of -lrmt'))})] spids: [16777215 547] ) ] spids: [16777215 556] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:branch) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [559] ) ] spids: [559] ) (AndOr children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$new_name'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:new_name) op: Equal rhs: {(DQ ($ VSub_Name '$branch'))} spids: [574] ) ] spids: [574] ) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_reflog'))}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidates) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(search_reflog)} {($ VSub_Name '$branch')})] ) left_token: <Left_CommandSub '$('> spids: [613 617] ) ) } spids: [611] ) ] spids: [611] ) ] spids: [16777215 608] ) ] else_action: [ (C {(die)} {(SQ <'reflog scanning requested, but'>)} {(SQ <'$GIT_DIR/logs/HEAD not readable'>)} ) ] spids: [621 637] ) ] spids: [16777215 593] ) ] spids: [16777215 639] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_reflog_merges'))}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidates) op: Equal rhs: { (DQ ($ VSub_Name '$candidates') (' ') (CommandSubPart command_list: (CommandList children: [(C {(search_reflog_merges)} {($ VSub_Name '$branch')})] ) left_token: <Left_CommandSub '$('> spids: [676 680] ) ) } spids: [672] ) ] spids: [672] ) ] spids: [16777215 669] ) ] else_action: [ (C {(die)} {(SQ <'reflog scanning requested, but'>)} {(SQ <'$GIT_DIR/logs/HEAD not readable'>)} ) ] spids: [684 700] ) ] spids: [16777215 654] ) ] spids: [16777215 702] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_merges'))}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidates) op: Equal rhs: { (DQ ($ VSub_Name '$candidates') (' ') (CommandSubPart command_list: (CommandList children: [(C {(search_merges)} {($ VSub_Name '$branch')})] ) left_token: <Left_CommandSub '$('> spids: [724 728] ) ) } spids: [720] ) ] spids: [720] ) ] spids: [16777215 717] ) ] spids: [16777215 731] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_merge_targets'))}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidates) op: Equal rhs: { (DQ ($ VSub_Name '$candidates') (' ') (CommandSubPart command_list: (CommandList children: [(C {(search_merge_targets)} {($ VSub_Name '$branch')})] ) left_token: <Left_CommandSub '$('> spids: [753 757] ) ) } spids: [749] ) ] spids: [749] ) ] spids: [16777215 746] ) ] spids: [16777215 760] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidates) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(git)} {(rev-parse)} {($ VSub_Name '$candidates')}) (C {(sort)} {(-u)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [765 777] ) ) } spids: [763] ) ] spids: [763] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$candidates'))}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:hint) op:Equal rhs:{(SQ )} spids:[795])] spids: [795] ) (AndOr children: [ (C {(test)} {(DQ (z) ($ VSub_Name '$all_strategies'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (ztttt))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:hint) op: Equal rhs: {(DQ (' (maybe try again with -a)'))} spids: [816] ) ] spids: [816] ) ] op_id: Op_DAmp ) (C {(die)} {(DQ ('no candidates for ') ($ VSub_Name '$branch') (' found') ($ VSub_Name '$hint'))} ) ] spids: [16777215 792] ) ] spids: [16777215 831] ) (C {(echo)} {(DQ ('** Candidates for ') ($ VSub_Name '$branch') (' **'))}) (Pipeline children: [ (ForEach iter_name: cmt iter_words: [{($ VSub_Name '$candidates')}] do_arg_iter: False body: (DoGroup children: [ (C {(git)} {(--no-pager)} {(log)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%ct:%h [%cr] %s'))} {(--abbrev-commit)} {(-1)} {($ VSub_Name '$cmt')} ) ] spids: [851 874] ) spids: [847 849] ) (C {(sort)} {(-n)}) (C {(cut)} {(-d) (Lit_Other ':')} {(-f2-)}) ] negated: False ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newest) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(git)} {(rev-list)} {(-1)} {($ VSub_Name '$candidates')})] ) left_token: <Left_CommandSub '$('> spids: [895 903] ) ) } spids: [893] ) ] spids: [893] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$dry_run'))}) terminator: <Op_Semi ';'> ) ] action: [ (C {(printf)} {(DQ ('** Most recent: '))}) (C {(git)} {(--no-pager)} {(log)} {(-1)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')} ) ] spids: [16777215 919] ) (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ VSub_Name '$new_name')}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [961] ) ] ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(printf)} {(DQ ('** Restoring ') ($ VSub_Name '$new_name') (' to '))}) (C {(git)} {(--no-pager)} {(log)} {(-1)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')} ) (C {(git)} {(branch)} {($ VSub_Name '$new_name')} {($ VSub_Name '$newest')}) ] spids: [947 965] ) ] else_action: [ (C {(printf)} {(DQ ('Most recent: '))}) (C {(git)} {(--no-pager)} {(log)} {(-1)} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')} ) (C {(echo)} {(DQ ('** ') ($ VSub_Name '$new_name') (' already exists, doing nothing'))}) ] spids: [1004 1041] ) ] )