milka v2025.11.4
Milka
A command-line tool for managing multiple git repositories simultaneously. Milka allows you to clone, fetch, pull, and push changes across multiple repositories with a single command, making it easy to manage projects with multiple related repositories.
TL;DR
Quick start with Milka:
- Install: Download from Releases or build from source
- Configure: Create
.meta/reps.tomlwith your repositories - Use: Run commands like
milka clone,milka pull,milka pushto manage all repos at once
Example config:
[[repo]]
dir = 'my-project'
remote = 'https://github.com/username/my-project.git'
branch = 'main'
Table of Contents
Features
- Clone multiple repositories at once using a configuration file
- Fetch updates from multiple repositories simultaneously
- Pull latest changes from all configured repositories
- Push changes to multiple repositories at once
- Scan current directory for existing git repositories and add them to configuration
- Colored output for better readability
- Spinner indicators for ongoing operations
- Authentication support for private repositories using personal access tokens
Installation
From Source
- Ensure you have Crystal installed (version >= 1.0.0)
- Clone this repository
- Build the project:
shards build - The executable will be available as
bin/milka
Pre-built Binaries
Pre-built static binaries are available for download on the Releases page. These are statically linked and can run on most systems without additional dependencies.
- Download the appropriate binary for your platform
- Extract the archive
- Make the binary executable (on Unix-like systems):
chmod +x milka - Optionally, move the binary to a directory in your PATH
Building with Container static build
You can also build Milka using the provided container configuration. See .meta/packaging/static-builds/Containerfile for the container build setup.
Docker
# Build the container
docker build -f .meta/packaging/static-builds/Containerfile -t milka .
# Run commands in the container
docker run --rm -v $(pwd):/workspace -w /workspace milka clone
docker run --rm -v $(pwd):/workspace -w /workspace milka pull
# Copy the static binary from the built container
docker create --name milka-container milka
docker cp milka-container:/usr/local/bin/milka ./milka
docker rm -v milka-container
Container builds provide a reproducible build environment and make it easy to run Milka in containerized environments.
Quick Start
-
Create a
.meta/reps.tomlconfiguration file in your project root with the repositories you want to manage:[[repo]] dir = 'my-project' remote = 'https://github.com/username/my-project.git' branch = 'main' [[repo]] dir = 'my-other-project' remote = 'https://github.com/username/my-other-project.git' branch = 'develop' -
Clone all repositories at once:
./bin/milka clone -
Pull latest changes from all repositories:
./bin/milka pull
Configuration
Milka uses a TOML file (default: .meta/reps.toml) to define which repositories to manage.
Configuration File Format
The configuration file uses the following format:
[[repo]]
dir = 'directory-name' # Local directory name where the repo will be cloned
remote = 'https://github.com/username/repo.git' # Git repository URL
branch = 'main' # Branch to work with (default: 'main')
# commit = '' # Specific commit to checkout (optional)
Default Configuration Location
By default, Milka looks for configuration in .meta/reps.toml relative to the current working directory. You can specify a different location using the --config option.
Commands
clone
Clone repositories specified in the configuration file.
milka clone # Clone all repositories
milka clone repo-name # Clone specific repository
fetch
Fetch updates from remote repositories without merging.
milka fetch # Fetch all repositories
milka fetch repo-name # Fetch specific repository
pull
Pull latest changes from remote repositories.
milka pull # Pull all repositories
milka pull repo-name # Pull specific repository
push
Push local changes to remote repositories.
milka push # Push all repositories
milka push repo-name # Push specific repository
init
Initialize a new configuration file for managing repositories.
milka init # Create a new .meta/reps.toml configuration file with template
scan
Scan current directory for git repositories and add them to the configuration file.
milka scan # Scan and add git repos to config
help
Show usage information.
milka help # Show help message
Options
--config <path>: Specify custom path to configuration file (default:./.meta/reps.toml)--branch <branch>: Override branch for operations (default: branch from config or 'main')
Usage Examples
Clone all configured repositories:
milka clone
Clone a specific repository:
milka clone my-repo
Pull changes from all repositories:
milka pull
Fetch updates for a specific repository:
milka fetch my-repo
Push changes to all repositories:
milka push
Pull changes from all repositories using a specific branch:
milka --branch develop pull
Use a custom configuration file:
milka --config /path/to/custom.toml pull
Scan current directory and add git repositories to configuration:
milka scan
Author
Milka is developed by Konrad Geletey kg@re128.org.
License
This project is licensed under the ISC License. See the LICENSE file for details.
milka
- 2
- 0
- 0
- 0
- 1
- about 1 hour ago
- October 4, 2025
ISC License
Sun, 23 Nov 2025 17:18:23 GMT