]> git.ipfire.org Git - thirdparty/git.git/blob - t/t6029-merge-subtree.sh
Add script for importing bits-and-pieces to Git.
[thirdparty/git.git] / t / t6029-merge-subtree.sh
1 #!/bin/sh
2
3 test_description='subtree merge strategy'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8
9 s="1 2 3 4 5 6 7 8"
10 for i in $s; do echo $i; done >hello &&
11 git add hello &&
12 git commit -m initial &&
13 git checkout -b side &&
14 echo >>hello world &&
15 git add hello &&
16 git commit -m second &&
17 git checkout master &&
18 for i in mundo $s; do echo $i; done >hello &&
19 git add hello &&
20 git commit -m master
21
22 '
23
24 test_expect_success 'subtree available and works like recursive' '
25
26 git merge -s subtree side &&
27 for i in mundo $s world; do echo $i; done >expect &&
28 test_cmp expect hello
29
30 '
31
32 test_expect_success 'setup' '
33 mkdir git-gui &&
34 cd git-gui &&
35 git init &&
36 echo git-gui > git-gui.sh &&
37 o1=$(git hash-object git-gui.sh) &&
38 git add git-gui.sh &&
39 git commit -m "initial git-gui" &&
40 cd .. &&
41 mkdir git &&
42 cd git &&
43 git init &&
44 echo git >git.c &&
45 o2=$(git hash-object git.c) &&
46 git add git.c &&
47 git commit -m "initial git"
48 '
49
50 test_expect_success 'initial merge' '
51 git remote add -f gui ../git-gui &&
52 git merge -s ours --no-commit gui/master &&
53 git read-tree --prefix=git-gui/ -u gui/master &&
54 git commit -m "Merge git-gui as our subdirectory" &&
55 git ls-files -s >actual &&
56 (
57 echo "100644 $o1 0 git-gui/git-gui.sh"
58 echo "100644 $o2 0 git.c"
59 ) >expected &&
60 test_cmp expected actual
61 '
62
63 test_expect_success 'merge update' '
64 cd ../git-gui &&
65 echo git-gui2 > git-gui.sh &&
66 o3=$(git hash-object git-gui.sh) &&
67 git add git-gui.sh &&
68 git commit -m "update git-gui" &&
69 cd ../git &&
70 git pull -s subtree gui master &&
71 git ls-files -s >actual &&
72 (
73 echo "100644 $o3 0 git-gui/git-gui.sh"
74 echo "100644 $o2 0 git.c"
75 ) >expected &&
76 test_cmp expected actual
77 '
78
79 test_done