Skip to content

dbarnett/gg

Repository files navigation

icon GG - Gui for JJ

screenshot

GG is an experimental GUI for Jujutsu. The idea is to take advantage of Jujutsu's clean architecture to present am interactive view of your repository. What if you were always in the middle of an interactive rebase, but this was actually good?

Installation

Binaries are available for several platforms on the releases page. Use the .dmg or .app.tar.gz, and the .msi or .exe on Windows. To build from source, run npm install followed by npm run tauri build.

Usage

Put gg on your path and run it from a Jujutsu workspace, or launch it separately and use the Repository->Open menu item to select a workspace directory. Tips:

  • On MacOS, try adding /Applications/gg.app/Contents/MacOS/ to your PATH environment variable. On Windows, try C:\Program Files\gg.
  • You can pass the argument --debug for a bunch of extra logging to stdout.

Configuration

GG uses jj config; revset-aliases.immutable_heads() is particularly important, as it determines how much history you can edit. GG has some additional settings of its own, with defaults and documentation here.

Features

GG doesn't require JJ to run, but you'll need it for tasks GG doesn't cover. What it can do:

  • Use the left pane to query and browse the log. Click to select revisions, double-click to edit (if mutable) or create a new child (if immutable).
  • Use the right pane to inspect and edit revisions - set descriptions, issue commands, view their changes and parents.
  • Right-click revisions, changes and branches to do some useful things. Drag them around to change history.
  • Undo anything with ⟲ in the bottom right corner.

More detail is available in the changelog.

Future Features

There's no roadmap as such, but items on the to-do list may or may not be implemented in future. Just about everything is subject to change for now, including the name.

Known Issues

GG is in early development and will have bugs. In theory it can't corrupt a repository thanks to the operation log, but it never hurts to make backups.

If your repo is "too large" some features will be disabled for performance. See the default config for details.

Development

Recommended IDE setup: VS Code + rust-analyzer + Svelte + Tauri.

Some useful commands:

  • npm run test - execute unit tests.
  • npm run gen - update the IPC message types in src/messages from src-tauri/messages.rs.
  • npm run tauri dev - launch a debug build with automatic reloading.
  • npm run tauri build -- --target universal-apple-darwin - create a fat binary for MacOS.
  • npm run tauri dev -- -- -- --debug - run locally with --debug. Yes, all three -- are necessary.

DESIGN.md has some basic information about how GG works.

About

GG - Gui for JJ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 62.5%
  • Svelte 23.1%
  • TypeScript 12.5%
  • CSS 1.7%
  • Other 0.2%