DevForge is a developer workspace toolkit that manages Git repositories across multiple providers and bootstraps projects by detecting their language. It consolidates gitforge and langforge into a single CLI.
- Repository Cloning: discovers repos from GitHub, Azure DevOps, or GitLab and clones missing ones via SSH in parallel
- Repository Syncing: fetches and rebases all repos under a directory, preserving uncommitted work via WIP branches
- Fork Syncing: detects forked repos via provider API, syncs with upstream parent, and handles conflicts by creating reference branches
- Branch Pruning: deletes local branches merged into the default branch across all repos
- Docker Management: lists container IPs and resets the Docker environment (stop, prune)
- Multi-Provider Support: automatic provider detection from directory path with per-provider auth tokens
curl -fsSL https://raw.githubusercontent.com/rios0rios0/devforge/main/install.sh | shOr build from source:
go install github.com/rios0rios0/devforge/cmd/devforge@latestDownload pre-built binaries from the releases page.
# Clone all repos for a GitHub user/org
dev repo clone <ssh-alias> [root-dir]
dev repo clone mine ~/Development/github.com/rios0rios0
dev repo clone my-org ~/Development/dev.azure.com/my-org
dev repo clone mine --dry-run # preview without cloning
# Sync all repos under a directory
dev repo sync [root-dir]
dev repo sync ~/Development/github.com/rios0rios0
# Sync forked repos with their upstream parent
dev repo fork-sync [root-dir]
dev repo fork-sync ~/Development/github.com/rios0rios0
dev repo fork-sync --dry-run # preview without syncing
# Delete local merged branches
dev repo prune [root-dir]
dev repo prune ~/Development/github.com/rios0rios0 --dry-run
# Docker environment management
dev docker ips # list container IP addresses
dev docker reset # stop all containers, prune everything
dev docker reset --dry-run # preview without executingSet the appropriate environment variable for your provider:
| Provider | Environment Variable |
|---|---|
| GitHub | GH_TOKEN |
| Azure DevOps | AZURE_DEVOPS_EXT_PAT |
| GitLab | GITLAB_TOKEN |
The clone command uses SSH config aliases (e.g., github.com-mine). Configure these in ~/.ssh/config:
Host github.com-mine
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
Contributions are welcome. See CONTRIBUTING.md for guidelines.
See LICENSE file for details.