Mirror a git repo in leader-followers configuration
Find a file
2019-11-06 13:49:54 +01:00
git-mirror.sh Add license 2019-11-06 13:49:54 +01:00
LICENSE Add license 2019-11-06 13:49:54 +01:00
README.md Initial commit 2019-11-06 13:47:23 +01:00

Git mirror

Run this script to synchronize a repository once.

Dependencies

  • bash
  • git
  • Tor and torify (see section "Tor")

Usage

./git-mirror.sh <workdir> <leader> <follower...>

Get started

Create a git repo, add remotes for the leader and the followers:

mkdir ~/git-mirror-my-repo; cd ~/git-mirror-my-repo
git init
git remote add github https://github.com/interesting/repo
git remote add gitea ssh://git@git.example.org/me/interesting-repo
git remote add gitlab ssh://git@git.example.com/myself/interesting-repo

Make sure Tor is running (see section "Tor"). Then run the mirroring script:

cd
git clone https://git.zeus.gent/midgard/git-mirror.git; cd git-mirror
./git-mirror.sh ~/git-mirror-my-repo github gitea gitlab

The first remote, github is the leader. The others are followers that are updated.

Tor

The leader is fetched over Tor through torify. Make sure Tor is running, or edit the script, changing torify git fetch into git fetch.

Motivation

GitHub has always been hypocritical, promoting open source while keeping its own stack closed. When GitHub was bought by Microsoft, the author decided to stop using it. Unfortunately a lot of software still only has a presence on GitHub. To make it easier to work with those, this simple mirror script was written.