@@ -52,6 +52,7 @@ test_expect_success 'initial merge' '
5252 git merge -s ours --no-commit gui/master &&
5353 git read-tree --prefix=git-gui/ -u gui/master &&
5454 git commit -m "Merge git-gui as our subdirectory" &&
55+ git checkout -b work &&
5556 git ls-files -s >actual &&
5657 (
5758 echo "100644 $o1 0 git-gui/git-gui.sh"
@@ -65,9 +66,10 @@ test_expect_success 'merge update' '
6566 echo git-gui2 > git-gui.sh &&
6667 o3=$(git hash-object git-gui.sh) &&
6768 git add git-gui.sh &&
69+ git checkout -b master2 &&
6870 git commit -m "update git-gui" &&
6971 cd ../git &&
70- git pull -s subtree gui master &&
72+ git pull -s subtree gui master2 &&
7173 git ls-files -s >actual &&
7274 (
7375 echo "100644 $o3 0 git-gui/git-gui.sh"
@@ -76,4 +78,47 @@ test_expect_success 'merge update' '
7678 test_cmp expected actual
7779'
7880
81+ test_expect_success ' initial ambiguous subtree' '
82+ cd ../git &&
83+ git reset --hard master &&
84+ git checkout -b master2 &&
85+ git merge -s ours --no-commit gui/master &&
86+ git read-tree --prefix=git-gui2/ -u gui/master &&
87+ git commit -m "Merge git-gui2 as our subdirectory" &&
88+ git checkout -b work2 &&
89+ git ls-files -s >actual &&
90+ (
91+ echo "100644 $o1 0 git-gui/git-gui.sh"
92+ echo "100644 $o1 0 git-gui2/git-gui.sh"
93+ echo "100644 $o2 0 git.c"
94+ ) >expected &&
95+ test_cmp expected actual
96+ '
97+
98+ test_expect_success ' merge using explicit' '
99+ cd ../git &&
100+ git reset --hard master2 &&
101+ git pull -Xsubtree=git-gui gui master2 &&
102+ git ls-files -s >actual &&
103+ (
104+ echo "100644 $o3 0 git-gui/git-gui.sh"
105+ echo "100644 $o1 0 git-gui2/git-gui.sh"
106+ echo "100644 $o2 0 git.c"
107+ ) >expected &&
108+ test_cmp expected actual
109+ '
110+
111+ test_expect_success ' merge2 using explicit' '
112+ cd ../git &&
113+ git reset --hard master2 &&
114+ git pull -Xsubtree=git-gui2 gui master2 &&
115+ git ls-files -s >actual &&
116+ (
117+ echo "100644 $o1 0 git-gui/git-gui.sh"
118+ echo "100644 $o3 0 git-gui2/git-gui.sh"
119+ echo "100644 $o2 0 git.c"
120+ ) >expected &&
121+ test_cmp expected actual
122+ '
123+
79124test_done
0 commit comments