Rona is a command-line interface tool designed to enhance your Git workflow with powerful features and intuitive commands. Built with Rust for performance and reliability, Rona simplifies common Git operations and provides additional functionality for managing commits, files, and repository status.
Rona is created and maintained by Tom Planche. The GitHub organization exists solely to host the Homebrew tap alongside the main repository.
- Intelligent File Staging - Pattern-based file exclusion with support for multiple patterns
- Structured Commit Messages - Interactive commit type selection with customizable templates
- Streamlined Push Operations - One-command commit and push workflows
- Customizable Configuration - Global and project-level TOML configuration files
- Template System - Flexible commit message formatting with variables
- Multi-Shell Support - Completions for Bash, Fish, Zsh, and PowerShell
- GPG Signing - Auto-detected commit signing with GPG
- Flexible Editor Support - Works with any command-line editor (vim, nano, code, zed, etc.)
Via Cargo:
cargo install rona
rona init vim # Initialize with your preferred editorVia Homebrew: (WIP)
brew tap rona-rs/rona
brew install rona
rona init vim# Stage files (excluding specific patterns)
rona -a "*.log" "*.tmp"
# Generate commit message (interactive mode)
rona -g -i
# Commit and push
rona -c -pThe main repository containing the Rona CLI tool source code.
- Written in Rust
- Comprehensive test suite
- Continuous integration with GitHub Actions
- Published to crates.io
Comprehensive documentation and guides for Rona.
Official Homebrew tap for macOS users.
- Easy installation via
brew tap - Automatic updates with
brew upgrade - Includes setup guides and quick start documentation
The Rona project consists of three interconnected repositories that work together to provide a complete ecosystem for users and contributors. Understanding how these repositories interact helps clarify the development and release process.
Development Cycle:
- rona is the source of truth - all development happens here
- When features are complete and tested, a new version is tagged
- The CI/CD pipeline automatically builds and publishes to crates.io
- The homebrew-rona formula is updated to reference the new version
- The wiki is updated if new features require documentation changes
User Installation Paths:
- Rust Developers: Install directly from crates.io using
cargo install rona - macOS Users: Install via Homebrew using
brew tap rona-rs/rona && brew install rona - All Users: Reference the wiki for comprehensive guides and documentation
Repository Dependencies:
- homebrew-rona depends on rona for version information and release artifacts
- wiki documents rona features and usage patterns
- Both homebrew-rona and wiki must be updated when significant changes occur in rona
The three repositories use sophisticated cross-repository automation to coordinate releases and updates automatically. Here's how the GitHub Actions workflows communicate:
Automation Details:
-
Version Detection (
rona/.github/workflows/release.yaml):- Monitors
Cargo.tomlfor version changes - Compares current version with the latest Git tag
- Only triggers release jobs if version has changed
- Monitors
-
Parallel Builds:
- Three jobs run simultaneously to build binaries:
build-linux: Ubuntu runner for Linux x86_64build-macos-intel: macOS runner with x86_64 targetbuild-macos-arm: macOS runner with aarch64 target
- Each job creates compressed tarballs with SHA256 checksums
- Three jobs run simultaneously to build binaries:
-
Publishing to crates.io:
- Happens in the
build-linuxjob after binary creation - Uses
CRATES_IO_TOKENsecret for authentication - Runs
cargo publish --dry-runfirst to validate
- Happens in the
-
Cross-Repository Communication:
- After all builds complete,
notify-homebrewjob runs - Checks if a PR already exists (prevents duplicates)
- Uses
repository_dispatchwith custom event typerona-release - Passes version tag and tarball URL as JSON payload
- Requires
HOMEBREW_RONA_TOKENsecret with repo write access
- After all builds complete,
-
Automatic Formula Update (
homebrew-rona/.github/workflows/update-formula.yml):- Listens for
repository_dispatchevents - Downloads tarball and computes SHA256 using
get-checksum.sh - Updates
Formula/rona.rbwith:- New version tag
- Updated tarball URL
- Fresh SHA256 checksum
- Updated test assertions
- Creates a pull request automatically
- PR title:
rona: bump to v2.10.3 - Branch:
bump/rona-v2.10.3
- Listens for
-
Manual Steps:
- Maintainer reviews and merges the Homebrew formula PR
- Documentation updates in wiki are done manually when features change
Security Considerations:
- Uses GitHub PAT tokens for cross-repository access
HOMEBREW_RONA_TOKEN: Allows rona repo to trigger workflows in homebrew-ronaCRATES_IO_TOKEN: Authenticates publishing to crates.io- All secrets are stored securely in GitHub repository settings
- Wiki Home - Start here for comprehensive documentation
- Installation Guide - Multiple installation methods
- Usage Guide - Learn how to use Rona effectively
- Command Reference - Complete command documentation
- Contributing - Guidelines for contributors
- Rust 2021 edition or later
- Git 2.0 or later
git clone https://github.com/rona-rs/rona.git
cd rona
cargo build --releasecargo test --workspacecargo clippy --workspace --release --all-targets --all-features -- \
--deny warnings -D warnings \
-W clippy::correctness \
-W clippy::suspicious \
-W clippy::complexity \
-W clippy::perf \
-W clippy::style \
-W clippy::pedanticContributions are welcome! Please read our Contributing Guidelines before submitting pull requests.
- Report bugs and issues
- Suggest new features
- Improve documentation
- Submit pull requests
- Star the repository
All projects in the Rona organization are dual-licensed under:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT License (LICENSE-MIT)
You may choose either license at your option.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Wiki: Rona Wiki