Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Generate bookmark names from commit messages, to push as branches, with Jujutsu VCS

License

Notifications You must be signed in to change notification settings

chriskrycho/jj-gpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

42 Commits

Repository files navigation

jj-gpc

✨ 100% local LLM-based bookmark (Git branch) name creation for Jujutsu VCS

Jujutsu is a modern, Git-compatible VCS. It supports (and I primarily use) anonymous branches for development. Since Git, and thus all Git-based "forges" (GitHub, GitLab, Bitbucket, etc.) require branch names, though, you need to give a branch name when you push your changes for others to work with.

Jujutsu has native support making this easy. If you run jj git push --change <change ID>,it creates a Jujutsu bookmark (which it maps to Git branches) and then pushes that newly created bookmark. The bookmark names it creates are of the form push-<change id>, though. Those are not especially attractive to most collaborators!

This tiny tool is one "solution": it generates a bookmark name based on the messages associated with the changes you tell it to use—by default, trunk()..@, or "everything between my current working copy and whatever the ‘trunk’ is for this project (usually main or master").

gpc is short for git push change.

Installation

Prerequisites: a relatively recent version of Rust. (I built it with Rust 1.82, but it probably works with versions quite a bit earlier than that!)

  • Clone the repo.

    With Jujutsu:

    jj git clone https://github.com/chriskrycho/jj-gpc

    With Git:

    git clone https://github.com/chriskrycho/jj-gpc.git
  • Install it with Cargo:

    cargo install --path . --locked
  • Install and run ollama.

  • Fetch the phi3 model:

    ollama pull phi3

That’s it; now you can run jj-gpc to do this.

Usage

jj-gpc [change] [flags]

change is the revset to use to generate the bookmark name. If not passed, it will use @.

A few of the most useful flags:

  • -f/--from: the initial revision to use in the revset for generating the name. Note that the revset is of the form <from>..<change>, so the <from> message will not be included, because the default is trunk(), and the point is to generate a description of what is different from the trunk.
  • -p/--prefix: apply a prefix before the generated bookmark name. For example, jj-gpc -p chriskrycho would produce a name like chriskrycho/did-some-stuff, instead of just did-some-stuff.
  • --log-format: pass one-line (the default) to pass just summary messages, or full to pass the whole commit message, to the LLM for branch name description.
  • --dry-run: generate a branch name but neither create the bookmark nor push it.

For the full set of flags and more details, run jj-gpc --help!

Example output

A handful of branch names I have actually seen generated by this:

  • update-infra-issues
  • update-mdbook-dependencies
  • software-updates-implemented
  • cleaning-and-fixes
  • small-bug-fixes
  • small-code-updates
  • add-some-examples
  • small-digital-notebook
  • fix-library-errors
  • bump-typescript-version
  • support-ts-versions

About

Generate bookmark names from commit messages, to push as branches, with Jujutsu VCS

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors 3

Languages

AltStyle によって変換されたページ (->オリジナル) /