Find a file
2021-03-30 00:23:09 +02:00
.github/workflows ci: use clippy annotations 2021-03-30 00:23:09 +02:00
src job: remove redundant repo name from log 2021-03-29 20:54:19 +02:00
.envrc nix: add 'direnv' integration 2021-03-29 19:43:41 +00:00
.gitignore git: ignore 'result/' symlink from 'nix build' 2021-03-29 19:43:41 +00:00
.lohr repo: add sourcehut mirror 2021-03-29 22:20:25 +02:00
.pre-commit-config.yaml pre-commit: add more useful hooks 2021-03-29 19:43:41 +00:00
Cargo.lock lohr: add default and additional remotes 2021-03-29 20:52:04 +02:00
Cargo.toml lohr: add default and additional remotes 2021-03-29 20:52:04 +02:00
default.nix nix: support legacy nix using 'flake-compat' 2021-03-29 19:43:41 +00:00
flake.lock nix: flake: use 'nixpkgs' input for 'naersk' 2021-03-29 19:43:41 +00:00
flake.nix flake: fix 'nix run' 2021-03-29 22:52:57 +02:00
LICENSE-APACHE README: add license notice 2021-03-29 23:17:17 +02:00
LICENSE-MIT README: add license notice 2021-03-29 23:17:17 +02:00
README.org README: add license notice 2021-03-29 23:17:17 +02:00
rust-toolchain setup basic app 2021-03-29 02:01:53 +02:00
shell.nix nix: support legacy nix using 'flake-compat' 2021-03-29 19:43:41 +00:00

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.

Contributing

I accept patches anywhere! Feel free to open a GitHub Pull Request, a GitLab Merge Request, or send me a patch by email!

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.

License

lohr is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.