terminal user interface to jujutsu. Focused on speed and clarity
OCaml 48.7%
Nix 1.4%
Dune 0.2%
Shell 0.1%
Makefile 0.1%
Standard ML 0.1%
C 0.1%
JavaScript 0.1%
Other 49.4%
302 3 0

Clone this repository

https://tangled.org/elidowling.com/jj_tui https://tangled.org/did:plc:wnmeshskfslkiwbftccioqut/jj_tui
git@tangled.org:elidowling.com/jj_tui git@tangled.org:did:plc:wnmeshskfslkiwbftccioqut/jj_tui

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Jujutsu TUI#

nix A TUI for the Jujutsu version control system

jj_tui-ezgif com-optimize

Press ? to show the help. (commands are different between graph and files view). Arrows or hjkl to navigate windows/items Space to select/deselect revisions (multi-select in graph view) Enter to widen the diff and scroll through it

Key features#

Normal jj operations#

  • commiting
  • rebasing
  • git pushing and pulling
  • Adding, moving and deleting bookmarks
  • squashing and splitting commits
  • space can be used to select multiple commits for copying, rebasing etc, starting a new commit on top of etc

Creating commits from the file view:#

  • space can be used to select files to commit seperately or move to different commit
  • Files and be sent to Next or Previous commits

filtering by revsets#

  • filter by any revest you like

List of graph commands:

jj_tui commands

Installing#

linux: Grab the latest release. It's statically linked and should work on any linux machine. mac: Grab a prebuild. Let me know if you have any issues as I can't test on a mac.

To open a shell with jj_tui on nix: nix shell github:faldor20/jj_tui

Dependencies#

The jujutsu CLI (minimum version 0.30.0) I haven't tested on windows or Mac. I believe it won't work outside Unix so Windows users will currently have to use wsl.

Config file:#

You can make a config.yaml config file in the following directories to customize key inputs linux: $XDG_CONFIG_HOME/jj_tui/ macos: ~/Library/preferences/jj_tui/ See ./jj_tui/lib/key_map.ml for a spec for the keymap and ./jj_tui/lib/config.ml for the config The keymap config lets you fully customize all the commands and their sub menus as well as remap the arrow keys.

Eg:

key_map:
  remap:
   h: "left"
   j: "down"
   k: "up"
   l: "right"
  graph:
    #Simple mapping from key to command_id
    p: prev
    #Command sub menu
    s:
      title: "Squash"
      sub:
        # sub menu command
        s: "squash_into_parent"
# If the terminal is smaller than this width, the UI will change to a single pane view
single_pane_width_threshold: 110
# Sets the limit to how many commits are ever rendered in jj_tui. Usefull for not slowing down too much when viewing 'all()' revest.
max_commits: 100

For a full list of commands ids see jj_tui/bin/graph_commands.ml and jj_tui/bin/file_commands.ml

logs:#

linux: $XDG_STATE_HOME/jj_tui/ macos: ~/Library/logs/jj_tui/

Dev#

Can be built with nix nix build or open a nix shell with nix develop For non-nix the project is currently not setup to build with dune or opam. Sorry, I'll get there one day.