A small tool for managing read-only subtrees split from a monolithic development repository.
This tool is very limited and if you don't know what git subtrees are, and what they're useful for then this is not the tool for you. 🐨
If you wish to do development of a large project in a single monolithic git repository, and distribute the components via separate repositories, then this tool might be useful to you.
This tool just:
- Create/updates subtree branches
- Copies tags from the primary repository to the subtree repositories
- git 1.8.0+
- bash 4.0 or greater
- GNU grep
- GNU awk
git clone https://github.com/GawainLynch/git-subtree-sync.git sudo ln -s /path/to/git-subtree-sync/git-subtree-sync.sh /usr/local/bin/git-subtree-syncYou will need to create a file called .gitsubtree in your monolithic repository, and populate it with the following parameters:
# Base URL of the upstream subtree repositoies REMOTE_BASE_URL=git@github.com:your-org-name # Full path to the local primary monolithic repo MONOLITH_REPO_ROOT=/path/to/monolithic/repo # Full *base* path that will contain the subtree repositories SUBTREE_REPO_ROOT=/path/to/subtrees # Bash 4+ associative array of: # # Key: Subtree's project name. Will be used for the name of the subtree's # directory under SUBTREE_REPO_ROOT and appended to REMOTE_BASE_URL # # Value: The relative path of the subtree in the monolithic repository # PREFIX_DIRS=( ["project-a"]="src/ProjectA/" ["project-b"]="src/ProjectB/" ["project-c"]="src/ProjectC/" )A .gitsubtree.dist file is in the root of this repo that can be copies and adapted as needed.