DevForge
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.
Features
- 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
Installation
curl -fsSL https://raw.githubusercontent.com/rios0rios0/devforge/main/install.sh | sh
Or build from source:
go install github.com/rios0rios0/devforge/cmd/devforge@latest
Download pre-built binaries from the releases page.
Usage
# 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 executing
Authentication
Set the appropriate environment variable for your provider:
| Provider |
Environment Variable |
| GitHub |
GH_TOKEN |
| Azure DevOps |
AZURE_DEVOPS_EXT_PAT |
| GitLab |
GITLAB_TOKEN |
SSH Aliases
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
Contributing
Contributions are welcome. See CONTRIBUTING.md for guidelines.
License
See LICENSE file for details.