One CLI for all your Git repositories across Azure DevOps, GitHub, and BitBucket.
Managing repositories across multiple Git providers is painful. You need different tools, different authentication, different commands. mgit solves this with a single CLI that works consistently across all major providers.
Before mgit: Multiple tools, scattered repos, manual synchronization
After mgit: One command to find, clone, and update repositories anywhere
Key Benefits:
- Universal: Works with Azure DevOps, GitHub, and BitBucket
- Powerful: Pattern-based discovery finds repos across all providers
- Fast: Concurrent operations with provider-optimized rate limiting
- Secure: Automatic credential masking and secure file permissions
- Scale: Tested with 1000+ repositories across enterprise environments
Not sure which provider to use or have multiple? mgit works with all of them.
| Provider | Best For | Repository Organization | Authentication |
|---|---|---|---|
| Azure DevOps | Enterprise, .NET teams, Microsoft ecosystem | Projects → Repositories | Personal Access Token |
| GitHub | Open source, modern development, CI/CD | Organizations → Repositories | Personal Access Token |
| BitBucket | Atlassian tools (Jira/Confluence), small teams | Workspaces → Repositories | App Password |
Most common scenarios:
- Enterprise with Azure/Office 365: Start with Azure DevOps
- Open source or modern development: Start with GitHub
- Using Jira or Confluence: Start with BitBucket
- Multi-provider environment: Configure all three
Goal: Clone your first repositories in under 5 minutes.
Option 1: Download Binary (Recommended)
# Download latest Linux binary
wget https://github.com/AeyeOps/mgit/releases/latest/download/mgit
chmod +x mgit
sudo mv mgit /usr/local/bin/mgit
# Verify installation
mgit --version
# Should show: mgit version: 0.8.1Option 2: Build from Source (uv preferred)
git clone https://github.com/AeyeOps/mgit && cd mgit
# Linux (Ubuntu/WSL) with uv
uv sync --all-extras --dev
uv run pyinstaller mgit.spec --clean
install -m 755 dist/mgit /usr/local/bin/mgit # requires write permission
# Or use the Make targets
make build-standalone-linux # validates + builds dist/mgit
make install-standalone-linux # validates + builds + tests + installs without sudo
make test-standalone-linux # validates + builds + tests dist/mgit
# Windows exe (two options)
# 1) From Windows PowerShell in the repo
# uv sync --all-extras --dev
# uv run pyinstaller mgit.spec --clean
# .\dist\mgit.exe --version
# 2) From WSL (triggers Windows build wrapper)
# bash scripts/build_windows_from_wsl.shGitHub (easiest to start):
# Create token: GitHub → Settings → Developer settings → Personal access tokens
# Required scopes: repo, read:org
mgit login --provider github --name my_github
# Enter your token when prompted (format: ghp_...)Verify connection:
mgit list "your-username/*/*" --limit 5
# Should show your repositories# Clone repositories matching pattern
mgit sync "your-username/*/*" ./test-repos
# Verify success
ls ./test-repos
# Should show cloned repository directoriesSuccess? You now have mgit working! Continue to Provider Setup for your full environment.
Problems? Check Quick Troubleshooting below.
"Command not found"
# If you installed to /usr/local/bin, check PATH
echo $PATH | grep -q "/usr/local/bin" && echo "PATH is correct" || echo "Add /usr/local/bin to PATH"
# Or run directly
./mgit --version"Bad credentials" (GitHub)
# Verify your token works
curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user
# Should return your user info, not 401 error"No repositories found"
# Try broader pattern
mgit list "*/*/*" --limit 10See detailed provider setup guides:
- Azure DevOps Guide - Enterprise setup with organizations and projects
- GitHub Guide - Open source and organization repositories
- BitBucket Guide - Workspace and team repositories
- Provider Comparison - Feature comparison and selection guide
# Azure DevOps
mgit login --provider azuredevops --name work_ado
# GitHub
mgit login --provider github --name personal_gh
# BitBucket
mgit login --provider bitbucket --name team_bbThese are the commands you'll use daily with mgit.
Pattern Format: organization/project/repository
- Azure DevOps: Uses all three parts (org/project/repo)
- GitHub/BitBucket: Uses organization/repository (project part ignored)
- Wildcards (
*) work in any position - Case-insensitive matching with partial matches supported
- Exact match: when all three segments are provided with no wildcards, mgit treats it as a precise repo lookup (case-insensitive fallback)
# All repositories everywhere
mgit list "*/*/*"
# All repositories in a specific organization
mgit list "myorg/*/*"
# All repositories with specific prefix/suffix
mgit list "*/*/api-*" # Starts with "api-"
mgit list "*/*/*-service" # Ends with "-service"
# All repositories containing keywords
mgit list "*/*/*payment*" # Contains "payment"Azure DevOps (full three-part pattern):
# Project-level filtering
mgit list "myorg/backend/*" # Only backend project repos
mgit list "myorg/*/user-*" # User-related repos across projects
mgit list "myorg/DataEngineering/*" # Specific projectGitHub/BitBucket (organization/repository):
# Organization-level filtering
mgit list "myorg/*/*" # All org repos (project ignored)
mgit list "*/webapp/*" # Any org with webapp repos# Multi-word matching
mgit list "*/*/*payment*gateway*" # Contains both "payment" and "gateway"
# Provider-specific queries
mgit list "*/project/*" --provider work_ado # Only Azure DevOps
mgit list "*/*/*" --provider github_personal # Only GitHub
# Output filtering with CLI tools
mgit list "*/*/*" --format json | jq '.[] | select(.is_private == false)'
# Output formats and limits
mgit list "myorg/*/*" --format json --limit 100
mgit list "myorg/*/*" --format json | jq length # Count reposQuick checks without credentials (sanity tests):
./dist/mgit config --list # Lists configured providers (or guidance if none)
./dist/mgit list "*/*/*" # Should not crash; reports no providers/repos if unconfigured
# Basic discovery
mgit list "myorg/*/*" --limit 10 # First 10 repos in organization
mgit list "*/*/*" --format json # All repos in JSON format
# Real-world examples (specify provider for organization access)
mgit list "AeyeOps/*/*" --provider github_aeyeops # GitHub: all AeyeOps repos
mgit list "myworkspace/*/*" --provider bitbucket_team # BitBucket: all workspace repos
mgit list "myorg/*/*" --provider work_ado # Azure DevOps: all org repos# Clone from specific provider
mgit sync "myorg/backend/*" ./repos --provider work_ado
# Clone with custom concurrency (default: 4)
mgit sync "myorg/*/*" ./repos --concurrency 10
# Force fresh clones (with confirmation prompt)
mgit sync "myorg/*/*" ./repos --forceBy default, mgit uses flat layout - repositories are cloned directly into the target directory:
./repos/
├── api-gateway/
├── auth-service/
└── web-frontend/
Collision Resolution: When repositories from different organizations share the same name, mgit automatically disambiguates by appending the organization name:
# Two orgs with repos named "auth"
mgit sync "org-a/*/*" ./repos # Creates: auth/
mgit sync "org-b/*/*" ./repos # Creates: auth_org-b/If organizations also collide (same org name on different providers), the provider is added:
./repos/
├── auth_github_myorg/
└── auth_azure_myorg/
Hierarchical Layout: Use --hierarchy for the traditional nested structure:
mgit sync "myorg/*/*" ./repos --hierarchyCreates:
./repos/
└── github.com/
└── myorg/
└── repos/
├── api-gateway/
└── auth-service/
# Update all repositories for an organization
mgit sync "myorg/*/*" ./repos
# Update with specific provider
mgit sync "myorg/*/*" ./repos --provider github_personal
# Azure DevOps: update all repositories in a specific project
mgit sync "myorg/MyProject/*" ./repos --concurrency 8# Status of all repos in directory (only shows dirty repos)
mgit status ./repos
# Include clean repos in output
mgit status ./repos --show-clean
# Fetch from remote before checking status
mgit status ./repos --fetch
# Fail if any repo has uncommitted changes (useful for CI)
mgit status ./repos --fail-on-dirtymgit stores configuration in ~/.config/mgit/config.yaml. Use mgit login to configure providers automatically.
For detailed configuration examples and troubleshooting, see:
- Configuration Examples - Complete YAML examples for all providers
- Query Patterns Guide - Repository discovery patterns
# List all configured providers
mgit config --list
# Show provider details (tokens automatically masked)
mgit config --show work_ado
# Set default provider
mgit config --set-default personal_gh
# Remove old configuration
mgit config --remove old_config# Authentication (Deprecated)
# Legacy Azure DevOps env vars are deprecated and not used by the current CLI.
# Use `mgit login` or edit ~/.config/mgit/config.yaml instead.
# export AZURE_DEVOPS_EXT_PAT=your-azure-pat
# Security settings (supported)
export MGIT_SECURITY_MASK_CREDENTIALS_IN_LOGS=true
# Proxy configuration (if needed)
export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080Azure DevOps PAT Requirements:
- Code: Read & Write
- Project and Team: Read
- URL format:
https://dev.azure.com/yourorg
GitHub Token Requirements:
- Scopes:
repo,read:org,read:user - Token format:
ghp_...(classic) orgithub_pat_...(fine-grained)
BitBucket App Password Requirements:
- Use username (not email) + app password (not regular password)
- Required permissions: Repositories Read/Write, Workspaces Read
# Test provider connection
mgit list "your-org/*/*" --provider provider-name --limit 5
# Check configuration file permissions
ls -la ~/.config/mgit/config.yaml # Should be 600Common Issues:
- Azure DevOps: Ensure URL format is
https://dev.azure.com/org(not old.visualstudio.com) - GitHub: Verify token format and scopes
- BitBucket: Use username + app password (not email + regular password)
# Find all infrastructure repositories
mgit list "*/*/infra*"
mgit list "*/*/terraform-*"
# Clone all API services for a project
mgit sync "myorg/*/api-*" ./api-services
# Update all repositories in workspace (local walk mode)
mgit sync ./my-workspace
# Check which repos need attention
mgit status ./my-workspace --all# Find all repos to migrate from old organization
mgit list "old-org/*/*" --format json > repos-to-migrate.json
# Clone all repos for migration
mgit sync "old-org/*/*" ./migration-workspace
# Verify migration readiness
mgit status ./migration-workspace --fail-on-dirty# Find all public repos (if supported by provider)
mgit list "*/*/*" --format json | jq '.[] | select(.is_private == false)'
# Find repos by naming convention
mgit list "*/*/prod-*" # Production repos
mgit list "*/*/test-*" # Test repos
mgit list "*/*/dev-*" # Development repos
# Cross-organization search
mgit list "*/ProjectName/*" # Find project across orgs
# Repository discovery for compliance
mgit list "*/*/*" --format json > all-repos-audit.json
mgit list "*/*/infra*" --format json > infrastructure-audit.json# Azure DevOps: Clone repos from multiple projects
mgit sync "myorg/Frontend/*" ./frontend-repos
mgit sync "myorg/Backend/*" ./backend-repos
mgit sync "myorg/Infrastructure/*" ./infra-repos
# GitHub: Organize by purpose
mgit sync "AeyeOps/*/*" ./aeyeops
mgit sync "myusername/*/*" ./personal
# Cross-provider: Find similar repos everywhere
mgit list "*/*/*-service" --format json| Command | Description | Example |
|---|---|---|
mgit login |
Configure provider access | mgit login --provider github --name work |
mgit list <pattern> |
Find repositories | mgit list "myorg/*/*" |
| `mgit sync [ | ] [path]` | Local pull (path) or remote sync (pattern) |
mgit status <path> |
Check repository status | mgit status ./workspace |
mgit diff [path] |
Detect and export repo change data (JSONL) | mgit diff . --output changes.jsonl |
mgit diff-remote <pattern> |
Discover remote repo changes | mgit diff-remote "myorg/*/*" --limit 50 |
mgit config |
Manage configuration | mgit config --list |
| Option | Description | Used by |
|---|---|---|
--provider NAME |
Use specific provider configuration | list, sync, diff-remote |
--concurrency N |
Number of parallel operations | status, diff, diff-remote, sync |
--format FORMAT |
Output format: table or json |
list |
--output FORMAT |
Output format: table or json |
status |
Notes:
- There is no global
--debugflag. To increase verbosity, setconsole_level: DEBUGin~/.config/mgit/config.yamlor run withCON_LEVEL=DEBUG. - Default concurrency can be configured via
global.default_concurrencyin~/.config/mgit/config.yaml. - Local sync (
mgit sync ./path) uses configured provider credentials for HTTPS remotes when the origin matches a provider config, without rewriting remotes.
# Linux
wget https://github.com/AeyeOps/mgit/releases/latest/download/mgit
chmod +x mgit && sudo mv mgit /usr/local/bin/mgit
# macOS (when available)
wget https://github.com/AeyeOps/mgit/releases/latest/download/mgit-macos
chmod +x mgit-macos && sudo mv mgit-macos /usr/local/bin/mgit
# Windows (when available)
# Download mgit.exe from releases page# Build your own binary (uv)
git clone https://github.com/AeyeOps/mgit
cd mgit
# Linux
uv sync --all-extras --dev
uv run pyinstaller mgit.spec --clean
install -m 755 dist/mgit /usr/local/bin/mgit # requires write permission
# Make target equivalent
make install-standalone-linux
# Windows (run in Windows PowerShell)
uv sync --all-extras --dev
uv run pyinstaller mgit.spec --clean
# Or from WSL: bash scripts/build_windows_from_wsl.shMakefile shortcuts (recommended):
make test
make lint
make build
make build-linux # builds Linux binary + installs to /opt/bin/mgit
make build-install # alias of build-linux
make build-windows # Windows build wrapper from WSL
make test-binary # Exercises the standalone binary (real provider calls)# Development installation (uv)
git clone https://github.com/AeyeOps/mgit
cd mgit
uv sync --all-extras --dev
uv run mgit --versionNote: Pre-built releases coming soon. Currently requires building from source.
mgit implements comprehensive security controls:
- Automatic credential masking in all logs and output
- Secure file permissions (600) for configuration files
- Input validation prevents path traversal and injection attacks
- Rate limiting prevents API abuse
- SSL/TLS verification for all network communications
Security best practices:
# Never commit configuration files
echo "~/.config/mgit/" >> .gitignore
# Rotate credentials every 90 days
# Use minimal token scopes for each provider-
Be specific when possible
myorg/backend/*is faster than*/backend/*myorg/*/api-*is faster than*/*/api-*
-
Use limits for large searches
mgit list "*/*/*" --limit 500 -
Filter at the source
- Provider APIs filter results, reducing network traffic
- Use patterns rather than post-processing
-
Provider-optimized concurrency
- GitHub: up to 10 concurrent operations
- Azure DevOps: up to 4 concurrent operations
- BitBucket: up to 5 concurrent operations
Rate limiting
# Reduce concurrency if hitting limits
mgit sync "large-org/*/*" ./repos --concurrency 2
# Increase console verbosity to see rate limit information
CON_LEVEL=DEBUG mgit list "large-org/*/*"Corporate proxy/SSL
# Configure proxy
export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080
export NO_PROXY=localhost,127.0.0.1,.company.com
# For SSL certificate issues
export SSL_CERT_FILE=/path/to/corporate-ca.crtNo repositories found
# Verify provider is configured
mgit config --list
# Check pattern syntax (1–3 segments supported; prefer 3: org/project/repo)
mgit list "myorg/*/*" --limit 5
# Try broader pattern
mgit list "*/*/*" --limit 10Too many results
# Use more specific patterns
mgit list "myorg/backend/*" --limit 20
# Apply --limit flag
mgit list "*/*/*" --limit 500
# Filter by organization or project
mgit list "myorg/*/*" --limit 100Pattern not matching expected repos
- Remember patterns are case-insensitive
- Check for typos in organization/project names
- Use
*liberally for partial matches - Verify provider configuration is correct
Slow operations
# Reduce concurrency for stability
mgit sync "large-org/*/*" ./repos --concurrency 3
# Use specific patterns (faster than wildcards)
mgit list "myorg/specific-project/*" # Better than "*/specific-project/*"
# Monitor performance with debug mode
mgit --debug sync "large-org/*/*" ./reposComplex scenarios
# DevOps team scenarios
mgit list "*/*/infra*" # Infrastructure repos
mgit list "*/*/terraform-*" # Terraform modules
mgit list "*/*/*db*" # Database-related repos
# Development patterns
mgit list "*/*/frontend-*" # Frontend applications
mgit list "*/*/*-ui" # UI repositories
mgit list "*/*/test-*" # Test repositories
# Cross-organization search
mgit list "*/ProjectName/*" # Find project across orgs
# Performance optimization
mgit list "myorg/backend/*" # Specific (faster)
mgit list "*/*/*" --limit 500 # Limit large searches# Command-specific help
mgit --help
mgit <command> --help
# Debug mode for troubleshooting
mgit --debug list "myorg/*/*"
# Check configuration and provider status
mgit config --listThe sync command is mgit's primary repository management tool, providing both local walk mode (scan and pull existing repos) and remote provider synchronization. This section provides comprehensive documentation for advanced usage.
# Local walk mode (default)
mgit sync [path]
# Remote provider sync
mgit sync <pattern> [path]
mgit sync --filter <pattern> [path]| Parameter | Required | Short | Description | Example |
|---|---|---|---|---|
pattern |
Remote only | - | Pattern to match repositories (org/project/repo) | "myorg/*/*", "*/*/api-*" |
path |
No | - | Local scan root (local mode) or target directory (remote mode) | ./repos, /home/user/code |
--filter |
No | - | Explicit remote pattern (forces remote mode) | --filter "myorg/*/*" |
--hierarchy |
No | - | Use hierarchical layout (host/org/project/repo) instead of flat | --hierarchy |
--provider |
No | -p |
Use specific provider configuration | --provider github_work |
--concurrency |
No | -c |
Number of parallel operations (default: 4) | --concurrency 10 |
--force |
No | -f |
Force re-clone all repositories (requires confirmation) | --force |
--dry-run |
No | - | Preview what would be done without making changes | --dry-run |
--progress |
No | - | Show progress bar (default: enabled) | --no-progress |
--summary |
No | - | Show detailed summary (default: enabled) | --no-summary |
| Repository State | Action Taken | Description |
|---|---|---|
| Not cloned | Clone | Repository will be cloned from remote |
| Clean (no changes) | Pull | Repository will be updated with git pull |
| Dirty (uncommitted changes) | Skip | Repository will be skipped (unless --force) |
| Non-Git directory | Skip | Directory exists but is not a Git repository |
Local walk mode notes:
- Scans a directory tree for existing Git repositories and runs
git pullon clean repos - Repositories without a remote or with uncommitted changes are skipped (unless
--force)
Directory layout notes:
- Flat layout (default): Repos cloned directly into target directory
- Collision resolution: When multiple orgs have repos with the same name,
_orgnamesuffix is added automatically; if org names also collide across providers,_provider_orgnamesuffix is used - Hierarchical layout (
--hierarchy): Traditional nested structurehost/org/project/repo
# Local walk mode (current directory)
mgit sync
# Local walk mode (specific path)
mgit sync ./workspace
# Basic usage - sync repos matching pattern
mgit sync "MyOrg/*/*" ./myproject-repos
# Sync with specific provider configuration
mgit sync "FrontendTeam/*/*" ./frontend --provider github_work
# Preview synchronization without making changes
mgit sync "BackendServices/*/*" ./backend --dry-run
# High-performance synchronization for large organizations
mgit sync "AcmeCorp/*/*" ./acme --concurrency 20
# Force fresh clones (with confirmation prompt)
mgit sync "DevOpsTools/*/*" ./tools --force
# Quiet mode for scripting
mgit sync "MyOrg/*/*" ./workspace --no-progress --no-summary- Default concurrency (4): Balanced for most networks and systems
- High concurrency (10-20): For fast networks and many small repos
- Low concurrency (1-2): For large repos or limited bandwidth
- Provider limits: GitHub (10), Azure DevOps (4), BitBucket (5)
The command handles various failure scenarios gracefully:
- Authentication failures: Clear message with fix instructions
- Network timeouts: Automatic retry with exponential backoff
- Disk space issues: Fail fast with helpful error
- Permission denied: Skip repo and continue with others
- Invalid project names: Validate before starting operations
- Dirty repositories: Skip with warning (unless
--force)
# Sync from multiple projects into organized structure
for project in Frontend Backend Infrastructure; do
mgit sync "$project" "./code/$project" --provider azdo_work
done
# Selective synchronization with post-processing
mgit list "MyOrg/*api*" --format json | \
jq -r '.[].repository' | \
xargs -I {} mgit sync --filter {} ./apis
# Parallel provider operations
mgit sync WorkProject ./work --provider github_work &
mgit sync PersonalProject ./personal --provider github_personal &
wait
# Continuous integration workflow
mgit sync "ci/*/*" ./ci-repos --dry-run --no-summary || exit 1
mgit sync "ci/*/*" ./ci-repos --concurrency 1 # Serial for stabilityWe welcome contributions! See CONTRIBUTING.md for:
- Development environment setup
- Code style guidelines
- Testing requirements
- Pull request process
Development commands:
make test # Run tests
make lint # Check code quality
make format # Format code
make build # Build Linux binary (no install)
make build-linux # Build + install Linux binary to /opt/bin/mgit
make build-windows # Build Windows binary (WSL wrapper)mgit uses an automated release process that triggers when the version changes:
-
Update Version: Use either Poetry or the helper script
# Using Poetry directly: poetry version patch # For bug fixes (0.3.1 -> 0.3.2) poetry version minor # For features (0.3.1 -> 0.4.0) poetry version major # For breaking changes (0.3.1 -> 1.0.0) poetry version 1.2.3 # Specific version # Or using the helper script (wraps Poetry): python scripts/update_version.py patch python scripts/update_version.py minor python scripts/update_version.py major python scripts/update_version.py 1.2.3
-
Update CHANGELOG.md: Document your changes under the new version
-
Commit and Push:
git add -A git commit -m "chore: bump version to X.Y.Z" git push origin main
The automated workflow will:
- Create a git tag
- Build Python packages
- Generate AI-powered release notes from CHANGELOG
- Create GitHub release with binaries
- Publish to PyPI (if configured)
Please report vulnerabilities using the process outlined in our Security Policy.
Security features include:
- Comprehensive threat model and risk analysis
- Automatic credential masking and sanitization
- Input validation and injection prevention
- Security monitoring and event tracking
- Regular security testing and auditing
This project is licensed under the MIT License - see the LICENSE file for details.
Built for DevOps teams who manage repositories at scale.
This section outlines potential future enhancements and features for mgit. These represent possible directions for evolution based on user feedback and emerging needs in multi-provider Git repository management.
# Potential future commands:
mgit init-interactive # Guided setup wizard
mgit sync --interactive # Interactive repository selection
mgit migrate # Migrate between providers with conflict resolutionmgit sync --watch # Auto-sync on file changes
mgit sync --schedule # Scheduled synchronization
mgit webhook-setup # Setup webhooks for automatic syncingmgit notify # Desktop notifications for sync status
mgit status --desktop # Desktop widget showing repository health
mgit conflicts # Visual conflict resolution interfacemgit branch-sync # Sync branch changes across repos
mgit tag-sync # Sync tags across repositories
mgit release-sync # Manage releases across repos
mgit cherry-pick-all # Cherry-pick commits to multiple reposmgit rebase-all # Rebase branches across repos
mgit merge-all # Merge branches across repos
mgit squash-all # Interactive squash across reposmgit health # Repository health check dashboard
mgit cleanup # Remove stale branches and tags
mgit archive # Archive old/unused repositories
mgit backup # Backup repository configurationsmgit stats # Repository statistics dashboard
mgit trends # Code activity trends over time
mgit contributors # Contributor analysis and statistics
mgit languages # Language distribution analysismgit ci-status # Show CI status across repos
mgit deploy # Trigger deployments across repos
mgit pipeline-status # Show pipeline status across repos
mgit releases # Manage releases across reposmgit audit # Security audit across repos
mgit compliance # Compliance check dashboard
mgit secrets-scan # Scan for exposed secrets
mgit license-check # License compliance analysis- Repository metadata caching
- Incremental synchronization
- Parallel processing improvements
- Memory usage optimization
- LDAP/SSO integration
- Audit logging
- Role-based access control
- Multi-tenant support
- VS Code extension
- JetBrains IDE plugins
- Vim/Neovim integration
- Shell completion enhancements
- Docker image optimization
- Kubernetes operator
- Cloud-native deployment
- Serverless function support
- GitLab (self-hosted and cloud)
- Gitee (Chinese alternative)
- SourceForge
- Custom Git provider support
- Repository templates and automation
- Advanced permission management
- Branch protection rules
- Repository settings synchronization
- Hot reload for development
- Enhanced debugging tools
- Performance profiling
- Development containers
- Integration test expansion
- Performance benchmarking
- Load testing capabilities
- Chaos engineering support
- Import from other tools (e.g., repo, gclient)
- Configuration migration assistants
- Backward compatibility guarantees
- Integration with Git hooks
- Support for Git LFS
- Integration with Git submodules
- Support for Git worktrees
The roadmap items are categorized by potential impact and implementation complexity:
High Priority (High Impact, Medium Complexity):
- Enhanced interactive mode
- Repository health dashboard
- CI/CD status integration
- Performance optimizations
Medium Priority (Medium Impact, Medium Complexity):
- Watch mode and automation
- Branch/tag synchronization
- Analytics and insights
- IDE integration
Lower Priority (Variable Impact, High Complexity):
- Advanced Git operations (rebasing, cherry-picking)
- Enterprise features (LDAP, audit logging)
- Additional provider support
- Container/cloud-native features
Architecture Principles:
- Maintain backward compatibility
- Keep the CLI interface intuitive
- Ensure security best practices
- Optimize for performance at scale
Development Approach:
- Feature flags for experimental features
- Comprehensive testing before release
- User feedback integration
- Documentation-first development
Community Engagement:
- GitHub discussions for feature requests
- User surveys for prioritization
- Beta testing programs
- Contributor guidelines enhancement
This roadmap represents potential directions for mgit evolution. Actual implementation priorities will be determined based on user feedback, community needs, and available development resources.