Repository navigation
Home
Tom Planche edited this page Aug 30, 2026
·
10 revisions
CLI tool to streamline your Git workflow with smart file staging, commit message generation, and branch synchronization.
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.
- Rust 2024 edition or later
- Git 2.23 or later (
git switchwas introduced in 2.23)
git clone https://github.com/rona-rs/rona.git
cd rona
cargo build --releaseApache 2.0 or MIT