src | ||
.gitignore | ||
.lohr | ||
Cargo.lock | ||
Cargo.toml | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
README.org | ||
rust-toolchain | ||
shell.nix |
lohr
lohr
is a Git mirroring tool.
I created it to solve a simple problem I had: I host my own git server at https://git.alarsyo.net, but want to mirror my public projects to GitHub / GitLab, for backup and visibility purposes.
GitLab has a mirroring setting, but it doesn't allow for multiple mirrors, as far as I know. I also wanted my instance to be the single source of truth.
How it works
Gitea is setup to send webhooks to my lohr
server on every push update. When
lohr
receives a push, it clones the concerned repository, or updates it if
already cloned. Then it pushes the update to all remotes listed in the .lohr
file at the repo root.
Destructive
This is a very destructive process: anything removed from the single source of truth is effectively removed from any mirror as well.
Why lohr?
I was looking for a cool name, and thought about the Magic Mirror in Snow White. Some furious wikipedia searching later, I found that the Magic Mirror was probably inspired by the Talking Mirror in Lohr am Main. That's it, that's the story.