The GitSplit component provides commands to split a monorepo using the splitsh-lite script and other tools.
The first implementation of GitSplit is DevShop itself. Look to OpenDevShop's code for a usage example:
-
Add the package to your project's
composer.json
:composer require devshop/git-split --dev
See https://github.com/opendevshop/devshop/blob/1.x/composer.json#L72
-
Import a legacy repo into a subfolder:
If a component repo already exists, you can merge it in with the git subtree command:
git subtree add --prefix=$PATH_IN_REPO $GIT_URL $BRANCH
For example, when we merged in the "devmaster" install profile from Drupal.org:
git subtree add --prefix=devmaster https://git.drupalcode.org/project/devmaster.git 7.x-1.x
See https://github.com/opendevshop/devshop/tree/1.x/devmaster
-
Add
extra.git-splits
Add the Secondary Repository information to the config.git-split.repos section of the main devshop/composer.json file.
"extra": { "git-split": { "repos": { "devmaster": "git@github.com:opendevshop/devmaster.git" } } }
-
Run the command
composer git:split
every time there is new code.See the DevShop GitHub Action "git.yml" file for an example on running
composer git:split
to push code to multiple remotes, including different github organizations and drupal.org using SSH keys:https://github.com/opendevshop/devshop/blob/1.x/.github/workflows/git.yml#L64
splitsh-lite is a third party shell script installed when this component is used.
Find sources and license at https://github.com/splitsh/lite.