1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-05 16:52:59 +01:00
git/test.sh
Avery Pennarun 9a8821ff33 Pass the path using the --prefix option instead of on the command line.
I like this better.  It's more like git-read-tree and some other commands.
2009-04-24 22:57:14 -04:00

99 lines
1.9 KiB
Bash
Executable file

#!/bin/bash -x
. shellopts.sh
set -e
rm -rf mainline subproj
mkdir mainline subproj
cd subproj
git init
touch sub1
git add sub1
git commit -m 'sub-1'
git branch sub1
git branch -m master subproj
touch sub2
git add sub2
git commit -m 'sub-2'
git branch sub2
touch sub3
git add sub3
git commit -m 'sub-3'
git branch sub3
cd ../mainline
git init
touch main1
git add main1
git commit -m 'main-1'
git branch -m master mainline
git fetch ../subproj sub1
git branch sub1 FETCH_HEAD
git read-tree --prefix=subdir FETCH_HEAD
git checkout subdir
tree=$(git write-tree)
com=$(echo initial-subdir-merge | git commit-tree $tree -p HEAD -p FETCH_HEAD)
git reset $com
#git commit -m 'initial-subdir-merge'
git merge -m 'merge -s -ours' -s ours FETCH_HEAD
touch subdir/main-sub3
git add subdir/main-sub3
git commit -m 'main-sub3'
touch main-2
git add main-2
git commit -m 'main-2 boring'
touch subdir/main-sub4
git add subdir/main-sub4
git commit -m 'main-sub4'
git fetch ../subproj sub2
git branch sub2 FETCH_HEAD
git merge -s subtree FETCH_HEAD
git branch pre-split
split1=$(git subtree split --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'
cd ../subproj
git fetch ../mainline split1
git branch split1 FETCH_HEAD
git merge FETCH_HEAD
touch sub6
git add sub6
git commit -m 'sub6'
cd ../mainline
split2=$(git subtree split --prefix subdir --rejoin)
git branch split2 "$split2"
touch subdir/main-sub7
git add subdir/main-sub7
git commit -m 'main-sub7'
split3=$(git subtree split --prefix subdir --rejoin)
git branch split3 "$split3"
cd ../subproj
git fetch ../mainline split3
git branch split3 FETCH_HEAD
git merge FETCH_HEAD
git branch subproj-merge-split3
cd ../mainline
git fetch ../subproj subproj-merge-split3
git branch subproj-merge-split3 FETCH_HEAD
git merge -s subtree subproj-merge-split3