This changes the config directory from the `dirs::cache_dir` to `dirs::config_dir`. It does however keep the cache directory as the default logging directory, as it seems a better fit. It also adds a function, `migrate_config`, which is called at startup to move directory entries inside the "old" config directory to the "new" one (but it skips moving log files). The intention is that this function can be removed after a few releases when the likelihood of someone upgrading from 0.6.0 or earlier is fairly small. Fixes #98 |
||
|---|---|---|
| .github | ||
| .vscode | ||
| assets | ||
| asyncgit | ||
| scopetime | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE.md | ||
| Makefile | ||
| README.md | ||
| rustfmt.toml | ||
| THEMES.md | ||
blazing fast terminal-ui for git written in rust
features
- fast and intuitive key only control
- context based help (no need to remember tons of hot-keys)
- inspect/commit/amend changes (incl. hooks: commit-msg/post-commit)
- (un)stage files/hunks, revert/reset files/hunk
- stashing (save, apply, drop, inspect content)
- browse commit log, diff committed changes
- scalable terminal ui layout
- async input polling and
- async git API for fluid control
benchmarks
For a RustBerlin meetup presentation I compared lazygit,tig and gitui parsing the entire linux git repository (~900k commits):
| lazygit | tig | gitui | |
|---|---|---|---|
| time | 57s | 4m 20s | 24s |
| mem | 2.6 gb | 1.3 gb | 170 mb |
| binary | 16 mb | 600 kb | 1.4 mb |
| freezes | yes | soso | no |
| crashes | sometimes | no | no |
presentation slides: https://github.com/extrawurst/gitui-presentation
known limitations
- no support for bare repositories (see #100)
- core.hooksPath config not supported
- revert/reset hunk in working dir (see #11)
motivation
I do most of my git usage in a terminal but I frequently found myself using git UIs for some use cases like: index/commit, diff, stash and log.
Over the last 2 years my go-to GUI tool for this was fork because it was not bloated, snappy and free. Unfortunately the free part will change soon and so I decided to build a fast & simple terminal tool myself to copy the fork features i am using the most.
installation
For the time being this product is considered alpha and not production ready.
Arch Linux
There is an AUR package for gitui:
git clone https://aur.archlinux.org/gitui.git
cd gitui
makepkg -si
Fedora
sudo dnf install gitui
homebrew (macos)
brew install extrawurst/tap/gitui
release binaries
see releases
install from source
requirements
install latest rust/cargo: https://www.rust-lang.org/tools/install
cargo install
the simplest way to start playing around with gitui is to have cargo build/install it:
cargo install gitui
diagnostics
to enable logging:
gitui -l
this will log to:
$HOME/Library/Caches/gitui/gitui.log(mac)$XDG_CACHE_HOME/gitui/gitui.log(linux usingXDG)$HOME/.cache/gitui/gitui.log(linux)
color theme
In general gitui should automatically work on dark and light terminal themes.
However you can customize everything to your liking: see THEMES.md
inspiration
- https://github.com/jesseduffield/lazygit
- https://github.com/jonas/tig
- https://github.com/git-up/GitUp (would be nice to comeup with a way to have the map view available in a terminal tool)

