(List (= scope= flags=0 words=[] bindings=[('USAGE', {[DQ [LIT_CHARS "(edit [-F | -m ] | show) [commit]"]]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('ACTION', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_NOTES_REF]]}) (= scope= flags=0 words=[] bindings=[('GIT_NOTES_REF', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.notesref]})]]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_NOTES_REF]]}) (= scope= flags=0 words=[] bindings=[('GIT_NOTES_REF', {[DQ [LIT_CHARS refs/notes/commits]]})]) ) (= scope= flags=0 words=[] bindings=[('MESSAGE', {[SQ ]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -m]}], [{[LIT_CHARS -F]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub ACTION]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS edit]]}) (Com {[LIT_CHARS usage]}) ) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS 0]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "error: option -m needs an argument"]]}) (ElseTrue) (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub MESSAGE]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MESSAGE', {[DQ [VarSub 1]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('MESSAGE', {[DQ [VarSub MESSAGE][LIT_CHARS "\n"][LIT_CHARS "\n"][VarSub 1]]})]) ) (Com {[LIT_CHARS shift]}) ) ) ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub ACTION]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS edit]]}) (Com {[LIT_CHARS usage]}) ) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS 0]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "error: option -F needs an argument"]]}) (ElseTrue) (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub MESSAGE]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MESSAGE', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub 1]]})]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('MESSAGE', {[DQ [VarSub MESSAGE][LIT_CHARS "\n"][LIT_CHARS "\n"][ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub 1]]})]]})]) ) (Com {[LIT_CHARS shift]}) ) ) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('COMMIT', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --default]} {[LIT_CHARS HEAD]} {[DQ [VarSub @]]})]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Invalid commit: "][VarSub @]]}) ) (Case to_match={[DQ [VarSub ACTION]]}, pat_word_list=[[{[LIT_CHARS edit]}], [{[LIT_CHARS show]}], [{[LIT_OTHER "*"]}]] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub GIT_NOTES_REF transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS notes] [LIT_SLASH /]}]]]} {[LIT_OTHER "="]} {[DQ [VarSub GIT_NOTES_REF]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Refusing to edit notes in "][VarSub GIT_NOTES_REF][LIT_CHARS " (outside of refs/notes/)"]]}) ) (= scope= flags=0 words=[] bindings=[('MSG_FILE', {[DQ [VarSub GIT_DIR][LIT_CHARS /new-notes-][VarSub COMMIT]]})]) (= scope= flags=0 words=[] bindings=[('GIT_INDEX_FILE', {[DQ [VarSub MSG_FILE][LIT_CHARS .idx]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_INDEX_FILE]}] bindings=[]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS 0]}) (= scope= flags=0 words=[] bindings=[('CURRENT_HEAD', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[DQ [VarSub GIT_NOTES_REF]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub CURRENT_HEAD]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('PARENT', {[SQ ]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('PARENT', {[DQ [LIT_CHARS "-p "][VarSub CURRENT_HEAD]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[DQ [VarSub GIT_NOTES_REF]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not read index"]]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub MESSAGE]]} {[LIT_OTHER "]"]}) (List (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -1]} {[VarSub COMMIT]} more_env=[('GIT_NOTES_REF', {[SQ ]})] ) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s/^/#/"]]} < (FilenameRedirectNode filename={[DQ [VarSub MSG_FILE]]} "> 1), > ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub CURRENT_HEAD]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS blob]} {[LIT_OTHER ":"] [VarSub COMMIT]} < (FilenameRedirectNode filename={[DQ [VarSub MSG_FILE]]} >"> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (= scope= flags=0 words=[] bindings=[('core_editor', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.editor]})]]})]) (Com {[VarSub GIT_EDITOR test_op=VS_TEST_COLON_HYPHEN {[VarSub core_editor test_op=VS_TEST_COLON_HYPHEN {[VarSub VISUAL test_op=VS_TEST_COLON_HYPHEN {[VarSub EDITOR test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS vi]}]}]}]}]} {[DQ [VarSub MSG_FILE]]}) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub MESSAGE]]} < (FilenameRedirectNode filename={[DQ [VarSub MSG_FILE]]} "> 1), > ) ) (Pipeline (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[LIT_OTHER "^"] [LIT_POUND "#"]} < (FilenameRedirectNode filename={[DQ [VarSub MSG_FILE]]} 0), > ) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} < (FilenameRedirectNode filename={[DQ [VarSub MSG_FILE]] [LIT_CHARS .processed]} "> 1), > ) ) (Com {[LIT_CHARS mv]} {[DQ [VarSub MSG_FILE]] [LIT_CHARS .processed]} {[DQ [VarSub MSG_FILE]]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -s]} {[DQ [VarSub MSG_FILE]]} {[LIT_OTHER "]"]}) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('BLOB', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS -w]} {[DQ [VarSub MSG_FILE]]})]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not write into object database"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[LIT_CHARS --cacheinfo]} {[LIT_CHARS 0644]} {[VarSub BLOB]} {[VarSub COMMIT]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not write index"]]}) ) ) (ElseTrue) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub CURRENT_HEAD]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Will not initialise with empty tree"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --force-remove]} {[VarSub COMMIT]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not update index"]]}) ) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('TREE', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not write tree"]]}) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('NEW_HEAD', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS Annotate]} {[VarSub COMMIT]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub TREE]} {[VarSub PARENT]}) )]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Could not annotate"]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "Annotate "][VarSub COMMIT]]} {[DQ [VarSub GIT_NOTES_REF]]} {[VarSub NEW_HEAD]} {[VarSub CURRENT_HEAD]}) ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub GIT_NOTES_REF]] [LIT_OTHER ":"] [VarSub COMMIT]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "No note for commit "][VarSub COMMIT][LIT_CHARS .]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[DQ [VarSub GIT_NOTES_REF]] [LIT_OTHER ":"] [VarSub COMMIT]}) ) (Com {[LIT_CHARS usage]}) ) )