https://github.com/raphgl/syngit
Cross-client repository synchronization tool
https://github.com/raphgl/syngit
git mirroring synchronization
Last synced: 12 months ago
JSON representation
Cross-client repository synchronization tool
- Host: GitHub
- URL: https://github.com/raphgl/syngit
- Owner: RaphGL
- License: gpl-3.0
- Created: 2022-08-11T17:41:33.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-24T22:14:52.000Z (over 2 years ago)
- Last Synced: 2024-06-20T23:58:37.264Z (almost 2 years ago)
- Topics: git, mirroring, synchronization
- Language: Go
- Homepage:
- Size: 120 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Syngit
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.
### Built With
- [Go](https://go.dev/)
- [go-git](https://github.com/go-git/go-git)
## Getting Started
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](https://pkg.go.dev/os#UserConfigDir). The config file has the following structure:
```toml
# 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"]
```
### Installation
```sh
$ git clone https://github.com/RaphGL/Syngit
$ cd Syngit
$ go build
```
## Usage
1. Create a `$HOME/.config/syngit.toml` file
2. Fill out the configuration file
3. Enable the syngit service (WIP):
```sh
$ systemctl enable syngit --now
```
## License
Distributed under GPLv3 License. See [`LICENSE`](https://github.com/RaphGL/Syngit/blob/main/LICENSE) for more information.