Skip to content

Git repository synchronization tool for managing multiple repos across providers

License

Notifications You must be signed in to change notification settings

arch-err/autogitter

Repository files navigation

Autogitter Banner

Autogitter

Git repository synchronization tool for managing multiple repos across providers

Release Build License Go Report

Go Cobra Charm Built with Claude Code

DocumentationInstallationQuick StartFeatures


Features

Feature Description
Multi-Provider GitHub, Gitea, and Bitbucket (Cloud + Server)
Sync Strategies manual (explicit list), all (fetch from API), regex (pattern matching)
Parallel Operations Clone and pull with configurable worker pools
Remote Configs Load config from HTTP/HTTPS URLs or SSH paths
Dry Run Preview changes before applying them
Interactive CLI Beautiful diffs, prompts, and progress indicators
SSH Options Custom ports and private keys per source

Installation

From Releases (Recommended)

Download the latest binary from the releases page.

# Linux (amd64)
curl -L https://github.com/arch-err/autogitter/releases/latest/download/ag-linux-amd64 -o ag
chmod +x ag
sudo mv ag /usr/local/bin/

# macOS (Apple Silicon)
curl -L https://github.com/arch-err/autogitter/releases/latest/download/ag-darwin-arm64 -o ag
chmod +x ag
sudo mv ag /usr/local/bin/

# Windows - download ag-windows-amd64.exe from releases

From Source

go install github.com/arch-err/autogitter/cmd/ag@latest

Quick Start

1. Set up authentication (for all/regex strategies):

ag connect

2. Create your config:

ag config

This opens your config in $EDITOR. Example configuration:

sources:
  # Sync all repos from a GitHub user
  - name: "GitHub"
    source: github.com/your-username
    strategy: all
    local_path: "~/Git/github"

  # Sync specific repos manually
  - name: "Work"
    source: gitea.company.com/myteam
    strategy: manual
    local_path: "~/Git/work"
    repos:
      - myteam/project-alpha
      - myteam/project-beta

  # Sync repos matching a pattern
  - name: "APIs"
    source: github.com/myorg
    strategy: regex
    local_path: "~/Git/apis"
    regex_strategy:
      pattern: "^myorg/api-.*"

3. Sync your repositories:

ag sync

4. Keep repos updated:

ag pull

Usage

# Show diff between local repos and config
ag diff

# Sync repositories (clone new, detect orphaned)
ag sync

# Preview what would happen
ag sync --dry-run

# Sync with 8 parallel workers
ag sync -j 8

# Prune repos not in config
ag sync --prune

# Pull updates for all repos
ag pull

# Edit config
ag config

# Validate config
ag config --validate

# Generate config template to stdout
ag config --generate > config.yaml

# Use a remote config
ag sync -c https://example.com/config.yaml
ag sync -c user@host:/path/to/config.yaml

Providers

Provider Host Detection Token Env Var
GitHub github.com GITHUB_TOKEN
Gitea Custom hosts GITEA_TOKEN
Bitbucket bitbucket.org or custom BITBUCKET_TOKEN

For self-hosted instances, specify the type field explicitly:

- name: "Self-hosted Gitea"
  source: git.company.com/user
  type: gitea  # explicit type
  strategy: all
  local_path: "~/Git/company"

Documentation

Full documentation available here.

Built With

  • Go - Programming language
  • Cobra - CLI framework
  • Charm - Terminal UI libraries (Huh, Lip Gloss, Log)
  • Claude Code - AI pair programming

License

MIT License - see LICENSE for details.

About

Git repository synchronization tool for managing multiple repos across providers

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages