Blazing 💥 fast terminal-ui for git written in rust 🦀
Go to file
Igor Raits 85a3d93077 chore: Add LICENSE file into the sub-crates
Those are released separately on crates.io and they do not contain
LICENSE file now that is required when packaging them in Linux
distributions.

Signed-off-by: Igor Raits <i.gnatenko.brain@gmail.com>
2020-05-28 16:11:54 +02:00
.github add stale bot 2020-05-21 23:53:07 +02:00
.vscode Move status tab into its own component 2020-05-11 17:20:34 +02:00
assets benchmark in md, no pic 2020-05-27 14:03:21 +02:00
asyncgit chore: Add LICENSE file into the sub-crates 2020-05-28 16:11:54 +02:00
scopetime chore: Add LICENSE file into the sub-crates 2020-05-28 16:11:54 +02:00
src update readme,changelog and rename logging arg (#88) 2020-05-28 09:32:08 +02:00
.gitignore Replace unwrap calls in asyncgit with error handling - closes #53 2020-05-15 15:15:26 +02:00
Cargo.lock replaces GITUI_LOGGING env variable by -l or --gitui-logging cmdline arguments using clap 2020-05-28 09:20:58 +02:00
Cargo.toml replaces GITUI_LOGGING env variable by -l or --gitui-logging cmdline arguments using clap 2020-05-28 09:20:58 +02:00
CHANGELOG.md update readme,changelog and rename logging arg (#88) 2020-05-28 09:32:08 +02:00
LICENSE.md add license 2020-03-16 15:42:56 +01:00
Makefile update readme,changelog and rename logging arg (#88) 2020-05-28 09:32:08 +02:00
README.md update readme,changelog and rename logging arg (#88) 2020-05-28 09:32:08 +02:00
rustfmt.toml formating to shorter lines 2020-03-18 15:14:13 +01:00
THEMES.md doc fixed 2020-05-20 12:03:43 +02:00

CI crates MIT UNSAFE ITCH

blazing fast terminal-ui for git written in rust

features

  • fast and intuitive key only control
  • context based help (no need to remember any hot-key)
  • inspect/commit changes (incl. hooks: commit-msg/post-commit)
  • (un)stage files/hunks, revert/reset files/hunk
  • stashing (save, apply, drop)
  • browse commit log
  • scalable 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

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.

release binaries

see releases

homebrew (macos)

brew install extrawurst/tap/gitui

install from source

requirements

install rust/cargo: https://www.rust-lang.org/tools/install

min rust version: 1.42

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 using XDG)
  • $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