Skip to content

Instantly share code, notes, and snippets.

@astehlik
Last active January 30, 2016 18:47
Show Gist options
  • Save astehlik/0767f06ae3c8b426ce0c to your computer and use it in GitHub Desktop.
Save astehlik/0767f06ae3c8b426ce0c to your computer and use it in GitHub Desktop.
TYPO3 git-subsplit research

TYPO3 git-subsplit research

Tools

https://github.com/dflydev/git-subsplit

Time measuring

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

Google cloud

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

Conclusions

  • 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment