https://github.com/gwendolenlynch/git-subtree-sync
A small tool for managing read-only subtrees split from a monolithic development repository.
https://github.com/gwendolenlynch/git-subtree-sync
git subtree subtree-scripts
Last synced: about 1 year ago
JSON representation
A small tool for managing read-only subtrees split from a monolithic development repository.
- Host: GitHub
- URL: https://github.com/gwendolenlynch/git-subtree-sync
- Owner: GwendolenLynch
- License: mit
- Created: 2017-12-11T10:26:59.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-19T10:57:00.000Z (over 8 years ago)
- Last Synced: 2025-04-10T11:25:31.464Z (about 1 year ago)
- Topics: git, subtree, subtree-scripts
- Language: Shell
- Homepage:
- Size: 8.79 KB
- Stars: 7
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# git subtree sync
A small tool for managing read-only subtrees split from a monolithic
development repository.
## Use case
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**. :koala:
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
## Requirements
- git 1.8.0+
- bash 4.0 or greater
- GNU grep
- GNU awk
## Installation
```bash
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-sync
```
## Configuration
You will need to create a file called `.gitsubtree` in your monolithic repository,
and populate it with the following parameters:
```bash
# 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.