Skip to content
Tom Planche edited this page Aug 30, 2026 · 10 revisions

Rona

CLI tool to streamline your Git workflow with smart file staging, commit message generation, and branch synchronization.

Architecture

Git Operations

All git operations in Rona delegate to the git CLI binary via std::process::Command. This means all git hooks (pre-commit, commit-msg, post-commit, pre-push, etc.) are triggered naturally on every relevant operation.

Rona operation git command
Repository detection git rev-parse --git-dir
Repo root path git rev-parse --show-toplevel
Current branch git symbolic-ref --short HEAD (fallback: git rev-parse --abbrev-ref HEAD)
File status git status --porcelain=v1
Stage files git add -A
Unstage excluded files git rm --cached -- <files>
Unstage files (reset) git restore --staged -- <files> (fallback: git rm --cached)
Discard working-tree changes (restore) git restore -- <files>
Commit git commit -F commit_message.md
Amend git commit --amend -F commit_message.md
Commit count git rev-list --count HEAD
Author / email git config --get user.name / git config --get user.email
Push git push
Pull git pull
Merge git merge <branch>
Rebase git rebase <branch>
Switch branch git switch <branch>
Create branch git switch -c <branch>
Remote URL git remote get-url <remote>
Default branch of a remote git symbolic-ref --short refs/remotes/<remote>/HEAD
Last commit subject git log -1 --pretty=%s
Open a merge request git push -o merge_request.create ...

GPG signing is handled by git's own configuration (commit.gpgsign, user.signingkey). Rona checks for a configured signing key via git config --get user.signingkey and passes --no-gpg-sign when --unsigned is requested.

Development

Requirements

  • Rust 2024 edition or later
  • Git 2.23 or later (git switch was introduced in 2.23)

Building from Source

git clone https://github.com/rona-rs/rona.git
cd rona
cargo build --release

Quick Links

Support

GitHub Issues

License

Apache 2.0 or MIT

Clone this wiki locally