gitsync
is a tool that allows you to sync a git repository's remotes. It was designed to allow me to sync public
repositories to a private CI system without having to manually check for changes and mirror them to the internal CI system.
It can sync multiple branches per remote pair, and can be run inside and outside of a current working directory that contains a git repository.
It is designed to be defensive at startup, checking as much state as it can to make sure the sync operation can proceed.
It is NOT designed to be run inside a working tree that you're hacking on. Setup the repo on disk somewhere with your remote pairs and then leave it alone, so it can cleanly fast forward from the source and push that cleanly into the target.
It checks out each branch before syncing it, in order to pull any changes.
Look at gitsync.conf
for an example configuration.
gitsync
uses the excellent go-git golang git library.
-help
print usage help-config
config file path (defaults to.gitsync.conf
)-debug
print debug information to stdout-insecure
allow reading an insecure config file-repodir
path to the git repository checkout you want to sync (defaults to$CWD
)-version
print version and build information and exit