馃嵃 Personal Multi-Git Remote Manager
go git
Go 73.3%
Just 0.7%
Other 25.9%
13 1 0

Clone this repository

https://tangled.org/fuwn.net/mugi https://tangled.org/did:plc:g4lsi6ub2d3kqklfokk3dvmy/mugi
git@knot.tangled.wizardry.systems:fuwn.net/mugi git@knot.tangled.wizardry.systems:did:plc:g4lsi6ub2d3kqklfokk3dvmy/mugi

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

馃嵃 Mugi#

Personal Multi-Git (or Tsumugi Kotobuki, if you will) Remote Manager

Mugi keeps your repositories in sync across multiple Git remotes (GitHub, Codeberg, SourceHut, etc.) with a single command.

Mugi is written in Go and uses Bubble Tea for its terminal interface.

Usage#

mugi pull                      # Pull all repos from all remotes
mugi pull windmark             # Pull Windmark from all remotes
mugi push windmark gh cb       # Push Windmark to GitHub and Codeberg
mugi fetch gemrest/september   # Fetch specific repository

Example Output Screenshot

Installation#

go install github.com/Fuwn/mugi/cmd/mugi@main

or

git clone https://github.com/Fuwn/mugi.git
cd mugi
go build -o mugi ./cmd/mugi
mv mugi ~/.local/bin/  # or anywhere in your PATH

Configuration#

Mugi uses a YAML config file at ~/.config/mugi/config.yaml:

remotes:
  github:
    aliases: [gh]
    url: git@github.com:${user}/${repo}.git
  codeberg:
    aliases: [cb]
    url: git@codeberg.org:${user}/${repo}.git
  sourcehut:
    aliases: [sh]
    url: git@git.sr.ht:~fuwn/${repo}

defaults:
  remotes: [github, codeberg, sourcehut]
  path_prefix: ~/Developer

repos:
  gemrest/windmark:
  gemrest/september:

--help#

Mugi - Personal Multi-Git Remote Manager

Usage:
  mugi [flags] <command> [repo] [remotes...]

Commands:
  pull          Pull from remote(s)
  push          Push to remote(s)
  fetch         Fetch from remote(s)
  add <path>    Add repository to config
  rm <name>     Remove repository from config
  list          List tracked repositories
  help          Show this help
  version       Show version

Flags:
  -c, --config <path>  Override config file path
  -V, --verbose        Show detailed output
  -f, --force          Force push (use with caution)
  -l, --linear         Run operations sequentially

Examples:
  mugi pull                      Pull all repositories from all remotes
  mugi push windmark gh cb       Push to GitHub and Codeberg
  mugi add .                     Add current directory to config
  mugi add ~/Developer/mugi      Add repository at path
  mugi rm mugi                   Remove repository from config
  mugi list                      List all tracked repositories

Licence#

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.