jj is a Git-compatible version control system. It is not yet officially supported by ChOps, but may be in the future.
This directory contains documentation and configuration to support jj in chromium.
Most commands for working locally with commits work just fine. The one exception to this is that Git submodules are not yet supported by jj.
This means whenever you see jj say “ignoring git submodule” (generally only when you switch between submitted commits), you will need to run gclient sync.
jj sync (using the config in tools/jj/config.toml)
Fetches origin/main, rebases the current change's branch onto trunk() (or all mutable changes with -a), and runs gclient sync -D.
If a sync (or any other operation) results in a conflict, you can resolve the conflict by directly editing the conflicted file(s) and/or using jj resolve.
If you would like to look at the pre-conflict state of a change (e.g. for a pre-jj dormant branch) you can use jj evolog -r <revision> to find its last unconflicted revision (e.g. <change_id>/10).
jj upload (using the config in tools/jj/config.toml)
Runs jj fix and git cl presubmit before pushing changes to Gerrit. Presubmits are skipped when uploading multiple revisions at once.
jj bug add
Attaches Bug: or Fixed: trailers to commits, with support for inheriting from parent commits or searching Buganizer via bugged.
jj new-chromium-workspace <path>
Creates a new workspace directory with a linked .gclient and a jj workspace at <path>/src. Run gclient sync inside the new workspace afterward to sync submodules.
jj gerrit-url
Prints Gerrit review URLs for revisions based on their Change-Id.
jj fix (using the config in tools/jj/config.toml)