https://github.com/dflydev/git-subsplit
All actions are executed locally to exclude network delay.
First, copy the typo3_src repo (not sure if this step is required):
cp typo3_src typo3_src-subsplit -r
Create some local repos for splitting:
for dir in typo3_src-linkvalidator typo3_src-backend typo3_src-frontend typo3_src-core; do
mkdir ${dir}
cd ${dir}
git init --bare
cd ..
done
Now, initialize subsplit:
cd typo3_src-subsplit
git subsplit init ../typo3_src
# Duration: 1.45 seconds
Finally run the split, first for one extension:
git subsplit publish \
"typo3/sysext/linkvalidator:/var/www/localdev/typo3-master/typo3_src-linkvalidator" \
--heads="master" --no-tags
# Duration: 143.127313911
Then for multiple Extensions:
git subsplit publish \
"typo3/sysext/linkvalidator:/var/www/localdev/typo3-master/typo3_src-linkvalidator \
typo3/sysext/backend:/var/www/localdev/typo3-master/typo3_src-backend" \
--heads="master" --no-tags
# Duration: 287.838563200
Duration of subsplit of one Extension and one branch on a Google Cloud VM with SSD takes ~74 seconds.
Using a RAM disk does not bring much improvement: ~72 seconds.
XFS and Scratch SSD: ~77 seconds
- Initialization / update takes just some seconds
- The sync of the subtree takes about 2.5 Minutes
- per branch
- per subtree
- per tag
- CPU usage is not very high (15%), IO as bottleneck? SSD harddisk used.