16fb8f217e17d4dfcf4e652d0ea633a33d559737
1#!/bin/bash -x
2. shellopts.sh
3set -e
4
5rm -rf mainline subproj
6mkdir mainline subproj
7
8cd subproj
9git init
10
11touch sub1
12git add sub1
13git commit -m 'sub-1'
14git branch sub1
15git branch -m master subproj
16
17touch sub2
18git add sub2
19git commit -m 'sub-2'
20git branch sub2
21
22touch sub3
23git add sub3
24git commit -m 'sub-3'
25git branch sub3
26
27cd ../mainline
28git init
29touch main1
30git add main1
31git commit -m 'main-1'
32git branch -m master mainline
33
34git fetch ../subproj sub1
35git branch sub1 FETCH_HEAD
36git subtree add --prefix=subdir FETCH_HEAD
37
38# this shouldn't actually do anything, since FETCH_HEAD is already a parent
39git merge -m 'merge -s -ours' -s ours FETCH_HEAD
40
41touch subdir/main-sub3
42git add subdir/main-sub3
43git commit -m 'main-sub3'
44
45touch main-2
46git add main-2
47git commit -m 'main-2 boring'
48
49touch subdir/main-sub4
50git add subdir/main-sub4
51git commit -m 'main-sub4'
52
53git fetch ../subproj sub2
54git branch sub2 FETCH_HEAD
55git subtree merge --prefix=subdir FETCH_HEAD
56git branch pre-split
57
58split1=$(git subtree split --prefix subdir --onto FETCH_HEAD --rejoin)
59echo "split1={$split1}"
60git branch split1 "$split1"
61
62touch subdir/main-sub5
63git add subdir/main-sub5
64git commit -m 'main-sub5'
65
66cd ../subproj
67git fetch ../mainline split1
68git branch split1 FETCH_HEAD
69git merge FETCH_HEAD
70
71touch sub6
72git add sub6
73git commit -m 'sub6'
74
75cd ../mainline
76split2=$(git subtree split --prefix subdir --rejoin)
77git branch split2 "$split2"
78
79touch subdir/main-sub7
80git add subdir/main-sub7
81git commit -m 'main-sub7'
82
83split3=$(git subtree split --prefix subdir --rejoin)
84git branch split3 "$split3"
85
86cd ../subproj
87git fetch ../mainline split3
88git branch split3 FETCH_HEAD
89git merge FETCH_HEAD
90git branch subproj-merge-split3
91
92cd ../mainline
93git fetch ../subproj subproj-merge-split3
94git branch subproj-merge-split3 FETCH_HEAD
95git subtree pull --prefix=subdir ../subproj subproj-merge-split3