An open API service indexing awesome lists of open source software.

https://github.com/rios0rios0/devforge

Developer forge CLI tool written in Go. Manages Git repositories across multiple providers (GitHub, Azure DevOps, GitLab) with parallel cloning, syncing, and project bootstrapping.
https://github.com/rios0rios0/devforge

automation cli developer-tools git golang repository-management

Last synced: 3 months ago
JSON representation

Developer forge CLI tool written in Go. Manages Git repositories across multiple providers (GitHub, Azure DevOps, GitLab) with parallel cloning, syncing, and project bootstrapping.

Awesome Lists containing this project

README

          

DevForge




Latest Release


License


Build Status


OpenSSF Best Practices

DevForge is a developer workspace toolkit that manages Git repositories across multiple providers and bootstraps projects by detecting their language. It consolidates [gitforge](https://github.com/rios0rios0/gitforge) and [langforge](https://github.com/rios0rios0/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

```bash
curl -fsSL https://raw.githubusercontent.com/rios0rios0/devforge/main/install.sh | sh
```

Or build from source:

```bash
go install github.com/rios0rios0/devforge/cmd/devforge@latest
```

Download pre-built binaries from the [releases page](https://github.com/rios0rios0/devforge/releases).

## Usage

```bash
# Clone all repos for a GitHub user/org
dev repo clone [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](CONTRIBUTING.md) for guidelines.

## License

See [LICENSE](LICENSE) file for details.