(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'subtree merge strategy'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\n'> <'\ts="1 2 3 4 5 6 7 8" &&\n'> <'\tfor i in $s; do echo $i; done >hello &&\n'> <'\tgit add hello &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit checkout -b side &&\n'> <'\techo >>hello world &&\n'> <'\tgit add hello &&\n'> <'\tgit commit -m second &&\n'> <'\tgit checkout master &&\n'> <'\tfor i in mundo $s; do echo $i; done >hello &&\n'> <'\tgit add hello &&\n'> <'\tgit commit -m master\n'> <'\n'> ) } ) (C {(test_expect_success)} {(SQ <'subtree available and works like recursive'>)} { (SQ <'\n'> <'\n'> <'\tgit merge -s subtree side &&\n'> <'\tfor i in mundo $s world; do echo $i; done >expect &&\n'> <'\ttest_cmp expect hello\n'> <'\n'> ) } ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <'\n'> <'\tmkdir git-gui &&\n'> <'\tcd git-gui &&\n'> <'\tgit init &&\n'> <'\techo git-gui > git-gui.sh &&\n'> <'\to1=$(git hash-object git-gui.sh) &&\n'> <'\tgit add git-gui.sh &&\n'> <'\tgit commit -m "initial git-gui" &&\n'> <'\tcd .. &&\n'> <'\tmkdir git &&\n'> <'\tcd git &&\n'> <'\tgit init &&\n'> <'\techo git >git.c &&\n'> <'\to2=$(git hash-object git.c) &&\n'> <'\tgit add git.c &&\n'> <'\tgit commit -m "initial git"\n'> ) } ) (C {(test_expect_success)} {(SQ <'initial merge'>)} { (SQ <'\n'> <'\tgit remote add -f gui ../git-gui &&\n'> <'\tgit merge -s ours --no-commit --allow-unrelated-histories gui/master &&\n'> <'\tgit read-tree --prefix=git-gui/ -u gui/master &&\n'> <'\tgit commit -m "Merge git-gui as our subdirectory" &&\n'> <'\tgit checkout -b work &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge update'>)} { (SQ <'\n'> <'\tcd ../git-gui &&\n'> <'\techo git-gui2 > git-gui.sh &&\n'> <'\to3=$(git hash-object git-gui.sh) &&\n'> <'\tgit add git-gui.sh &&\n'> <'\tgit checkout -b master2 &&\n'> <'\tgit commit -m "update git-gui" &&\n'> <'\tcd ../git &&\n'> <'\tgit pull -s subtree gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'initial ambiguous subtree'>)} { (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master &&\n'> <'\tgit checkout -b master2 &&\n'> <'\tgit merge -s ours --no-commit gui/master &&\n'> <'\tgit read-tree --prefix=git-gui2/ -u gui/master &&\n'> <'\tgit commit -m "Merge git-gui2 as our subdirectory" &&\n'> <'\tgit checkout -b work2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge using explicit'>)} { (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master2 &&\n'> <'\tgit pull -Xsubtree=git-gui gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge2 using explicit'>)} { (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master2 &&\n'> <'\tgit pull -Xsubtree=git-gui2 gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o3 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {(test_done)}) ] )