Find a file
2026-01-23 21:32:16 +02:00
.idea improving UX 2026-01-22 22:11:22 +02:00
assets Saving changes 2026-01-23 21:32:16 +02:00
crates Saving changes 2026-01-23 21:32:16 +02:00
docs Saving changes 2026-01-23 21:32:16 +02:00
scripts Saving changes 2026-01-23 21:32:16 +02:00
.gitignore add zed example 2026-01-10 21:07:34 +02:00
Cargo.lock Saving changes 2026-01-23 21:32:16 +02:00
Cargo.toml save 2026-01-16 20:46:13 +02:00
LICENSE-APACHE save 2026-01-10 21:04:02 +02:00
LICENSE-GPL-3.0 gitgpui save 2026-01-10 23:26:36 +02:00
LICENSE-MIT save 2026-01-10 21:04:02 +02:00
README.md Saving changes 2026-01-23 21:32:16 +02:00

GitGpui

Fast, resource-efficient, fully open source Git GUI written in Rust, targeting GitKraken/SourceTree/GitHub Desktop-class workflows using gpui for the UI.

Goals

  • Pure Rust Git backend (recommended: gix/gitoxide backend).
  • Fast UI for very large repositories (virtualized lists, incremental loading, caching).
  • Modular architecture with clear boundaries, to support benchmarking and testing.

Workspace layout

  • crates/gitgpui-core: domain types + app/service boundaries (no heavy deps).
  • crates/gitgpui-git: Git abstraction + no-op backend.
  • crates/gitgpui-git-gix: gix/gitoxide backend implementation.
  • crates/gitgpui-state: MVU state store + command execution scaffolding.
  • crates/gitgpui-ui: UI model/state (toolkit-independent).
  • crates/gitgpui-ui-gpui: gpui views/components.
  • crates/gitgpui-app: binary entrypoint wiring everything together.

Getting started

Offline-friendly default build (does not build the UI or the Git backend):

cargo build

To build the actual app youll enable features (requires network for dependencies):

cargo build -p gitgpui-app --features ui,gix

To also compile the gpui-based UI crate:

cargo build -p gitgpui-app --features ui-gpui,gix

Run (opens the repo passed as the first arg, or falls back to the current directory):

cargo run -p gitgpui-app --features ui-gpui,gix -- /path/to/repo

Profiling (Callgrind)

To profile the app with Valgrind Callgrind (interactive on/off instrumentation):

bash scripts/profile-callgrind.sh --open -- /path/to/repo

Crash logs

If the app crashes due to a Rust panic, GitGpui writes a crash log to:

  • Linux: $XDG_STATE_HOME/gitgpui/crashes/ (fallback: ~/.local/state/gitgpui/crashes/)
  • macOS: ~/Library/Logs/gitgpui/crashes/
  • Windows: %LOCALAPPDATA%\\gitgpui\\crashes\\ (fallback: %APPDATA%\\gitgpui\\crashes\\)

Roadmap (high level)

  • Open repositories; show status + commit history timeline.
  • Branch/remote tracking; pull/push; fetch with progress.
  • Stash create/apply/drop; discard changes; stage/unstage.
  • Visualize branch/merge topology from refs (commit graph lanes).
  • Benchmarks for log/graph/status/diff on large repos.