aboutsummaryrefslogtreecommitdiff

🍰 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: [email protected]:${user}/${repo}.git
  codeberg:
    aliases: [cb]
    url: [email protected]:${user}/${repo}.git
  sourcehut:
    aliases: [sh]
    url: [email protected]:~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.