Git Mirror will watch a GitLab or GitHub groups and keep it in sync with external git repositories.
- Create group on your gitlab instance or gitlab.com. e.g. 
mirror-test - Add a repository you like to sync to. e.g 
my-project - Add a description to the project in YAML format containing an 
originfield. e.g.origin: https://git.example.org/my-project.git - Execute  set the 
PRIVATE_TOKENenvironment variable a personal access token or your private token and executegit-mirror 
export PRIVATE_TOKEN="<personal-access-token>"
git-mirror -g mirror-testThis will sync the group mirror-test on gitlab.com. If you want to sync a group on a different GitLab instance, use the -u flag.
git-mirror -g mirror-test -u http://gitlab.example.orggit-mirror allows to execute multiple mirror jobs in parallel using the -c <n> flag.
git-mirror -g mirror-test -c 8This will execute at most 8 sync jobs in parallel
For git-mirror to mirror a repository it needs to know where to sync from.
In order to achive this git-mirror expects the description field of a mirrored project to
be valid YAML with at least an origin field.
origin: https://git.example.org/my-project.gitA list of currently supported fields
originSource repository to mirror fromskipTemporarily exclude a project from syncing by addingskip: truedestinationReserved for future userefspecPush only refspec. Add the refspec list to use it. Any valid refspec is possible. E.g.See also https://git-scm.com/book/en/v2/Git-Internals-The-Refspecrefspec: ["master", "2.0", "+refs/tags/*:refs/tags/*"]
Any other fields are ignored
git-mirror also supports mirroring to GitHub.
This can be done by specifying GitHub as provider:
export PRIVATE_TOKEN="<personal-access-token>"
git-mirror -g mirror-test -p GitHubThis has been tested against github.com but it might also work with on premise installations of GitHub.
There is also a docker image available. It can be used as follows:
docker run -e PRIVATE_TOKEN="x" bachp/git-mirror git-mirror -g mirror -u http://gitlab.example.com
In order to build this project you need a least rust v1.18.0. The easiest way to get rust is via: rustup.rs
The project can be built using cargo
cargo build
- gitlab-mirror-orchestrator tool at OW2 Consortium.
 
This project is licensed under the MIT License - see the LICENSE file for details