|
|
|
@ -1,4 +1,11 @@
@@ -1,4 +1,11 @@
|
|
|
|
|
#!/bin/bash -x |
|
|
|
|
create() |
|
|
|
|
{ |
|
|
|
|
for d in 1 2 3 4 5 6 7 8 9 10; do |
|
|
|
|
echo "$1" |
|
|
|
|
done >"$1" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
. shellopts.sh |
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
@ -8,27 +15,27 @@ mkdir mainline subproj
@@ -8,27 +15,27 @@ mkdir mainline subproj
|
|
|
|
|
cd subproj |
|
|
|
|
git init |
|
|
|
|
|
|
|
|
|
touch sub1 |
|
|
|
|
create sub1 |
|
|
|
|
git add sub1 |
|
|
|
|
git commit -m 'sub-1' |
|
|
|
|
git commit -m 'sub1' |
|
|
|
|
git branch sub1 |
|
|
|
|
git branch -m master subproj |
|
|
|
|
|
|
|
|
|
touch sub2 |
|
|
|
|
create sub2 |
|
|
|
|
git add sub2 |
|
|
|
|
git commit -m 'sub-2' |
|
|
|
|
git commit -m 'sub2' |
|
|
|
|
git branch sub2 |
|
|
|
|
|
|
|
|
|
touch sub3 |
|
|
|
|
create sub3 |
|
|
|
|
git add sub3 |
|
|
|
|
git commit -m 'sub-3' |
|
|
|
|
git commit -m 'sub3' |
|
|
|
|
git branch sub3 |
|
|
|
|
|
|
|
|
|
cd ../mainline |
|
|
|
|
git init |
|
|
|
|
touch main1 |
|
|
|
|
git add main1 |
|
|
|
|
git commit -m 'main-1' |
|
|
|
|
create main4 |
|
|
|
|
git add main4 |
|
|
|
|
git commit -m 'main4' |
|
|
|
|
git branch -m master mainline |
|
|
|
|
|
|
|
|
|
git fetch ../subproj sub1 |
|
|
|
@ -38,49 +45,49 @@ git subtree add --prefix=subdir FETCH_HEAD
@@ -38,49 +45,49 @@ git subtree add --prefix=subdir FETCH_HEAD
|
|
|
|
|
# this shouldn't actually do anything, since FETCH_HEAD is already a parent |
|
|
|
|
git merge -m 'merge -s -ours' -s ours FETCH_HEAD |
|
|
|
|
|
|
|
|
|
touch subdir/main-sub3 |
|
|
|
|
git add subdir/main-sub3 |
|
|
|
|
git commit -m 'main-sub3' |
|
|
|
|
create subdir/main-sub5 |
|
|
|
|
git add subdir/main-sub5 |
|
|
|
|
git commit -m 'main-sub5' |
|
|
|
|
|
|
|
|
|
touch main-2 |
|
|
|
|
git add main-2 |
|
|
|
|
git commit -m 'main-2 boring' |
|
|
|
|
create main6 |
|
|
|
|
git add main6 |
|
|
|
|
git commit -m 'main6 boring' |
|
|
|
|
|
|
|
|
|
touch subdir/main-sub4 |
|
|
|
|
git add subdir/main-sub4 |
|
|
|
|
git commit -m 'main-sub4' |
|
|
|
|
create subdir/main-sub7 |
|
|
|
|
git add subdir/main-sub7 |
|
|
|
|
git commit -m 'main-sub7' |
|
|
|
|
|
|
|
|
|
git fetch ../subproj sub2 |
|
|
|
|
git branch sub2 FETCH_HEAD |
|
|
|
|
git subtree merge --prefix=subdir FETCH_HEAD |
|
|
|
|
git branch pre-split |
|
|
|
|
|
|
|
|
|
split1=$(git subtree split --prefix subdir --onto FETCH_HEAD --rejoin) |
|
|
|
|
split1=$(git subtree split --annotate='*' --prefix subdir --onto FETCH_HEAD --rejoin) |
|
|
|
|
echo "split1={$split1}" |
|
|
|
|
git branch split1 "$split1" |
|
|
|
|
|
|
|
|
|
touch subdir/main-sub5 |
|
|
|
|
git add subdir/main-sub5 |
|
|
|
|
git commit -m 'main-sub5' |
|
|
|
|
create subdir/main-sub8 |
|
|
|
|
git add subdir/main-sub8 |
|
|
|
|
git commit -m 'main-sub8' |
|
|
|
|
|
|
|
|
|
cd ../subproj |
|
|
|
|
git fetch ../mainline split1 |
|
|
|
|
git branch split1 FETCH_HEAD |
|
|
|
|
git merge FETCH_HEAD |
|
|
|
|
|
|
|
|
|
touch sub6 |
|
|
|
|
git add sub6 |
|
|
|
|
git commit -m 'sub6' |
|
|
|
|
create sub9 |
|
|
|
|
git add sub9 |
|
|
|
|
git commit -m 'sub9' |
|
|
|
|
|
|
|
|
|
cd ../mainline |
|
|
|
|
split2=$(git subtree split --prefix subdir --rejoin) |
|
|
|
|
split2=$(git subtree split --annotate='*' --prefix subdir --rejoin) |
|
|
|
|
git branch split2 "$split2" |
|
|
|
|
|
|
|
|
|
touch subdir/main-sub7 |
|
|
|
|
git add subdir/main-sub7 |
|
|
|
|
git commit -m 'main-sub7' |
|
|
|
|
create subdir/main-sub10 |
|
|
|
|
git add subdir/main-sub10 |
|
|
|
|
git commit -m 'main-sub10' |
|
|
|
|
|
|
|
|
|
split3=$(git subtree split --prefix subdir --rejoin) |
|
|
|
|
split3=$(git subtree split --annotate='*' --prefix subdir --rejoin) |
|
|
|
|
git branch split3 "$split3" |
|
|
|
|
|
|
|
|
|
cd ../subproj |
|
|
|
|