Welcome to SplitPHP
SplitPHP is a little program that will split subtrees from your Git repository and push them to a separate repository. The actual splitting is done using the splitsh-lite tool by Fabien Potencier., (*1)
Getting started
SplitPHP is likely to be used on a continuous integration environment like Travis, Jenkins or TeamCity. There are 3 main requirements for the tool to work:, (*2)
Make sure that the splitsh-lite
command is available by putting its path in the PATH environment variable, so that SplitPHP can find it. The same goes for Git, obviously., (*3)
Installation
Installation is easiest done by using Composer. Add tbureck/splitphp
to your require-dev
configuration. The splitphp
program will then be available in your configured bin
directory., (*4)
Usage
In order to use SplitPHP, you need to create a configuration file, which defaults to splitsh.json
. It defines the subtrees that should be extracted to the other repositories., (*5)
Configuration
Example:, (*6)
{
"common-library": {
"prefixes": [
{"key": "src/Library/Common", "value": ""}
],
"target": "git@bitbucket.org:my-organization/my-repository.git",
"branches": ["master", "dev-1.x"]
}
}
The key of an object is a simple name for easy identification. The object defines 3 properties:, (*7)
prefixes is a list of key-value pairs that map the monolith path to the standalone repository path (empty path means root directory), (*8)
target specifies the target standalone repository. Make sure that your CI server has write access to this repository., (*9)
branches is a list of branches that the split should be done for., (*10)
You can specify as many subtrees as you like, they will be processed in that order., (*11)
Running the split
In order to run the split, you simply need to call the binary and pass the current branch:, (*12)
bin/splitphp master
In TeamCity, you can dynamically pass the current branch by using a specific variable. Check your CI server's documentation for how to do this, if you're using a different system:, (*13)
bin/splitphp %vcsroot.branch%
SplitPHP will be checking for the configuration file splitsh.json
in the current working directory by default. You can specify a different path by using the -c
option:, (*14)
bin/splitphp -c my/path/to/splitconfiguration.json