Skip to content

omarkohl/jip

Repository files navigation

jip

jip is a CLI tool for managing stacked (or normal) pull requests using jj (Jujutsu) and GitHub.

Each commit is a self-contained, atomic unit of change that gets its own pull request. When you update a PR, jip posts a comment showing what you changed (rebase noise is filtered out), so reviewers don't have to re-read everything.

Features

  • One commit == one PR — each commit gets its own focused, reviewable PR, with title and description taken from the commit message
  • 1-step PR creation — By default you need to create a bookmark (branch), push it and finally open the PR with title and description. jip send does all that in one command.
  • Diff comments on update — when you update a PR, jip posts a diff showing only what you changed (rebase noise is filtered out)
  • No local state — all information lives in the PR itself on GitHub; reviewers and contributors don't need jip, and teams can freely mix jip and non-jip users
  • Automatic bookmarks — no need to manually create jj bookmarks
  • Supports forks — works both for repositories where you have write access as well as forked ones
  • Normal GitHub merge — no special "land" command, just merge PRs as usual
  • Stacks may contain merge commits — supports non-linear revision graphs

Installation

Single binary, no runtime dependencies.

go install github.com/omarkohl/jip@latest

Pre-built binaries for Linux, macOS, and Windows are available on the releases page.

Requirements: jj (Jujutsu) and a GitHub repository. jip does not work with Git directly.

Quick start

# Make your changes as a stack of jj commits
jj commit -m "feat: add user data model" # change-id: wys
jj commit -m "feat: add user store" # change-id: pkn
jj commit -m "feat: add user API endpoint" # change-id: qnv

# Create/update PRs for the stack (defaults to @-)
jip send

# After review feedback, update the "feat: add user store" change
jj new pkn
# ... make changes ...
jj squash
jip s qnv # 's' is short for 'send'

# Assume that the PR "feat: add user data model" is merged on GitHub

# Update the other PRs by doing the following ...
jj git fetch
jj new qnv
jj rebase -o main
jip s

# ... or in one command:
jip s --rebase qnv

A stack of commits before sending:

jj log showing a stack of three commits

The resulting PR on GitHub with stack navigation:

GitHub PR showing stack navigation with links to all PRs in the stack

Documentation

License

MIT

About

Tool for managing pull requests with jj (jujutsu)

Topics

Resources

License

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors