(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (Com {[LIT_CHARS .]} {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /lib-submodule-update.sh]}) (FunctionDef reset_branch_to_HEAD [] (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS branch]} {[LIT_CHARS -D]} {[DQ [VarSub 1]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -b]} {[DQ [VarSub 1]]} {[LIT_CHARS HEAD]}) (Com {[LIT_CHARS git]} {[LIT_CHARS branch]} {[LIT_CHARS --set-upstream-to] [LIT_OTHER "="] [DQ [LIT_CHARS origin/][VarSub 1]]} {[DQ [VarSub 1]]}) ) ) ) (FunctionDef git_pull [] (AndOr OP_AND_IF (Com {[LIT_CHARS reset_branch_to_HEAD]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS pull]}) ) ) (Com {[LIT_CHARS test_submodule_switch]} {[DQ [LIT_CHARS git_pull]]}) (FunctionDef git_pull_ff [] (AndOr OP_AND_IF (Com {[LIT_CHARS reset_branch_to_HEAD]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS pull]} {[LIT_CHARS --ff]}) ) ) (Com {[LIT_CHARS test_submodule_switch]} {[DQ [LIT_CHARS git_pull_ff]]}) (FunctionDef git_pull_ff_only [] (AndOr OP_AND_IF (Com {[LIT_CHARS reset_branch_to_HEAD]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS pull]} {[LIT_CHARS --ff-only]}) ) ) (Com {[LIT_CHARS test_submodule_switch]} {[DQ [LIT_CHARS git_pull_ff_only]]}) (FunctionDef git_pull_noff [] (AndOr OP_AND_IF (Com {[LIT_CHARS reset_branch_to_HEAD]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS pull]} {[LIT_CHARS --no-ff]}) ) ) (= scope= flags=0 words=[] bindings=[('KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS test_submodule_switch]} {[DQ [LIT_CHARS git_pull_noff]]}) (Com {[LIT_CHARS test_done]}) )