repos-manager

One CLI to sync them all. Clone, update, and manage your Git repositories across every provider.

$_
repos-manager

Every provider, one tool

Sync repositories from 5 Git forges with a single command

github.com

GitHub

gh auth login

READY
gitlab.com

GitLab

glab auth login

READY
forgejo

Forgejo / Gitea

tea login add

READY
bitbucket.org

Bitbucket

bitbucket auth login

BETA
radicle

Radicle

rad auth

BETA

Features

parallel.sh

Parallel sync

Sync repos in parallel with configurable job count. Default: 4 concurrent operations.

status.sh

Status overview

See dirty, ahead, behind, and diverged repos across all providers at a glance.

namespace.sh

Namespace mirroring

Repos are organized as provider/owner/repo matching the remote structure.

filter.sh

Filter and ignore

Fine-grained control with .repos-filter and .repos-ignore pattern files.

protocol.sh

SSH and HTTPS

Choose your protocol. SSH by default, HTTPS with a flag.

update.sh

Self-update

Built-in update command checks for new versions and updates in-place.

Quick start

step-1 ~ install
$_ git clone git@github.com:Dxsk/repos-manager.git
$_ cd repos-manager && make install
Installed to ~/.local/bin/repos-manager
step-2 ~ authenticate
$_ repos-manager login
=== Login github ===
Logged in to github.com
=== Login gitlab ===
Logged in to gitlab.com
step-3 ~ sync
$_ repos-manager sync --all
user/dotenv (updated)
user/project (cloned)
user/infra (dirty, skipped)
Done: 1 cloned, 1 updated, 1 skipped
step-4 ~ status
$_ repos-manager status
github.com/user/infra dirty
github.com/user/project ahead (+1)
gitlab.com/work/api behind (-3)
Total: 23 repos - 20 clean, 1 dirty, 1 ahead, 1 behind