|
|
|
@ -24,8 +24,8 @@ check()
@@ -24,8 +24,8 @@ check()
|
|
|
|
|
check_equal() |
|
|
|
|
{ |
|
|
|
|
echo |
|
|
|
|
echo "check a:" "$1" |
|
|
|
|
echo " b:" "$2" |
|
|
|
|
echo "check a:" "{$1}" |
|
|
|
|
echo " b:" "{$2}" |
|
|
|
|
if [ "$1" = "$2" ]; then |
|
|
|
|
return 0 |
|
|
|
|
else |
|
|
|
@ -100,17 +100,17 @@ git branch sub2 FETCH_HEAD
@@ -100,17 +100,17 @@ git branch sub2 FETCH_HEAD
|
|
|
|
|
git subtree merge --prefix=subdir FETCH_HEAD |
|
|
|
|
git branch pre-split |
|
|
|
|
|
|
|
|
|
split1=$(git subtree split --annotate='*' \ |
|
|
|
|
spl1=$(git subtree split --annotate='*' \ |
|
|
|
|
--prefix subdir --onto FETCH_HEAD --rejoin) |
|
|
|
|
echo "split1={$split1}" |
|
|
|
|
git branch split1 "$split1" |
|
|
|
|
echo "spl1={$spl1}" |
|
|
|
|
git branch spl1 "$spl1" |
|
|
|
|
|
|
|
|
|
create subdir/main-sub8 |
|
|
|
|
git commit -m 'main-sub8' |
|
|
|
|
|
|
|
|
|
cd ../subproj |
|
|
|
|
git fetch ../mainline split1 |
|
|
|
|
git branch split1 FETCH_HEAD |
|
|
|
|
git fetch ../mainline spl1 |
|
|
|
|
git branch spl1 FETCH_HEAD |
|
|
|
|
git merge FETCH_HEAD |
|
|
|
|
|
|
|
|
|
create sub9 |
|
|
|
@ -123,14 +123,14 @@ git branch split2 "$split2"
@@ -123,14 +123,14 @@ git branch split2 "$split2"
|
|
|
|
|
create subdir/main-sub10 |
|
|
|
|
git commit -m 'main-sub10' |
|
|
|
|
|
|
|
|
|
split3=$(git subtree split --annotate='*' --prefix subdir --rejoin) |
|
|
|
|
git branch split3 "$split3" |
|
|
|
|
spl3=$(git subtree split --annotate='*' --prefix subdir --rejoin) |
|
|
|
|
git branch spl3 "$spl3" |
|
|
|
|
|
|
|
|
|
cd ../subproj |
|
|
|
|
git fetch ../mainline split3 |
|
|
|
|
git branch split3 FETCH_HEAD |
|
|
|
|
git fetch ../mainline spl3 |
|
|
|
|
git branch spl3 FETCH_HEAD |
|
|
|
|
git merge FETCH_HEAD |
|
|
|
|
git branch subproj-merge-split3 |
|
|
|
|
git branch subproj-merge-spl3 |
|
|
|
|
|
|
|
|
|
chkm="main4 main6" |
|
|
|
|
chkms="main-sub10 main-sub5 main-sub7 main-sub8" |
|
|
|
@ -147,9 +147,9 @@ allchanges=$(git log --name-only --pretty=format:'' | sort | fixnl)
@@ -147,9 +147,9 @@ allchanges=$(git log --name-only --pretty=format:'' | sort | fixnl)
|
|
|
|
|
check_equal "$allchanges" "$chkms $chks" |
|
|
|
|
|
|
|
|
|
cd ../mainline |
|
|
|
|
git fetch ../subproj subproj-merge-split3 |
|
|
|
|
git branch subproj-merge-split3 FETCH_HEAD |
|
|
|
|
git subtree pull --prefix=subdir ../subproj subproj-merge-split3 |
|
|
|
|
git fetch ../subproj subproj-merge-spl3 |
|
|
|
|
git branch subproj-merge-spl3 FETCH_HEAD |
|
|
|
|
git subtree pull --prefix=subdir ../subproj subproj-merge-spl3 |
|
|
|
|
|
|
|
|
|
# make sure exactly the right set of files ends up in the mainline |
|
|
|
|
mainfiles=$(git ls-files | fixnl) |
|
|
|
@ -162,5 +162,12 @@ check_equal "$mainfiles" "$chkm $chkms_sub $chks_sub"
@@ -162,5 +162,12 @@ check_equal "$mainfiles" "$chkm $chkms_sub $chks_sub"
|
|
|
|
|
allchanges=$(git log --name-only --pretty=format:'' | sort | fixnl) |
|
|
|
|
check_equal "$allchanges" "$chkm $chkms $chks $chkms_sub" |
|
|
|
|
|
|
|
|
|
# make sure the --rejoin commits never make it into subproj |
|
|
|
|
check_equal "$(git log --pretty=format:'%s' HEAD^2 | grep -i split)" "" |
|
|
|
|
|
|
|
|
|
# make sure no 'git subtree' tagged commits make it into subproj. (They're |
|
|
|
|
# meaningless to subproj since one side of the merge refers to the mainline) |
|
|
|
|
check_equal "$(git log --pretty=format:'%s%n%b' HEAD^2 | grep 'git-subtree.*:')" "" |
|
|
|
|
|
|
|
|
|
echo |
|
|
|
|
echo 'ok' |
|
|
|
|