Synchronize repositories across Git clients
Table of Contents
Syngit is a CLI and daemon that lets you synchronize repositories across different clients (Github, Codeberg, Gitlab, etc) with a very simple configuration file. Syngit is a tool with no external dependencies (not even git). It contains everything you need, just compile it and run it.
To use Syngit, make sure you got the tokens/passwords needed to authenticate for your target Git clients (ie Github, GitLab, Codeberg, etc).
After you've gotten your tokens/passwords you need a syngit.toml
in your system's default config directory. The config file has the following structure:
# your main git client
main_client = "github"
# ignores all files that match the glob pattern, unimplemented!
glob_ignore = ["*cpp"]
# where the cache for syngit should be stored, defaults to https://pkg.go.dev/os#UserCacheDir
cache_dir = "~/Documents/Test"
[client.codeberg]
username = "RaphGL"
token = "my_token"
[client.github]
username = "RaphGL"
token = "my_token"
# temporarily disable synchronization to this client
disable = true
[client.gitlab]
username = "RaphGL"
token = "my_token"
# repositories to be ignored on this client
ignore = ["repo1", "repo2"]
$ git clone https://github.com/RaphGL/Syngit
$ cd Syngit
$ go build
- Create a
$HOME/.config/syngit.toml
file - Fill out the configuration file
- Enable the syngit service (WIP):
$ systemctl enable syngit --now
Distributed under GPLv3 License. See LICENSE
for more information.