v0.1.3
·
256 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
jj-stack 0.1.3 focuses on making changes made on GitHub safe to recover from. It can now finish partial stack merges, bring reviewer commits into your local stack, and explain when a PR branch changed without silently overwriting work.
Breaking changes
- jj-stack now requires
jj0.45.1 or newer, so that it can make use of the newconvergecommand injj. Checkjj --versionand upgradejjbefore installing this release if needed. - If a submit fails after you edit its pull request descriptions, retry with
jj-stack submit --resume-edit <saved-file>. The oldjj-stack submit --edit <saved-file>form no longer works;--editby itself always starts a new editing session. - If you validate the JSON from
vieworlist, accept the newbranch_movedstatus. It means a PR branch contains commits that do not match either your local change or the version you last submitted. Thecommentedstatus has been removed from the schema because jj-stack never produced it.
Highlights
- When a PR branch is updated on GitHub by a reviewer, another checkout, or another tool,
jj-stack viewandjj-stack listnow show that clearly. To keep the new commits, runjj-stack checkout --pull-request <pull-request>and follow the printedjj convergeorjj squashcommand. To discard them and publish your local version, runjj-stack relink --replace-remote <pull-request> <change-id>, then submit the stack again. synccan now finish after GitHub merges only the bottom of a stack, even if you have continued editing the pull requests above it. It rebases those local changes onto the new trunk and updates the remaining pull requests without discarding your edits.- You can now finish a merge by naming any pull request in the stack:
jj-stack sync --pull-request <number-or-url>. jj-stack finds and syncs the complete local stack, including when that pull request has already merged.
Fixes
syncnow recognizes more common post-merge states, including a merged change that became empty after you rebased it yourself and a partial stack merge followed by newer commits on trunk. It also checks whether the remaining PR branches changed on GitHub before changing your local history.cleanupno longer deletes a PR branch that another open or reopenable pull request still uses as its base. When you usecleanup --close, jj-stack first retargets the pull request to trunk so deleting its branch does not make it impossible to reopen.submitandrelinknow stop before acting on an abandoned change, a change with no content, or a change with no description. The error points to the change and tells you whether to select a visible change, add or abandon content, or runjj describe.- In a fresh clone,
checkout --pull-requestno longer fails because jj treats fetched PR branches as immutable.doctor --fixalso removes those bookmarks and any leftovers from an interrupted checkout or sync. - A stack whose top change is being edited in another jj workspace is no longer mistaken for a shorter stack, preventing a submit from dropping that top change from the GitHub stack.
- Very long change titles no longer make
submitfail with an invalid branch name. If you customizejj-stack.branch_prefix, invalid values now fail early with a useful error, and changing the prefix does not prevent updates to pull requests created with the old one. - If GitHub rejects a label or reviewer after creating a pull request, jj-stack keeps the pull request linked to its local change so a normal retry can finish the submit. Pull request descriptions based on templates or multiline change descriptions also update correctly again.
mergenow honorsjj-stack.merge_methodwhen GitHub cannot report which merge methods the repository allows. Stacks based directly on a merge commit at trunk can also be submitted, merged, and synced again.- GitHub failures now include the useful part of GitHub's response and distinguish rate limits from authentication problems. A broken stack or missing pull request that you are not working with no longer prevents jj-stack from finding unrelated valid stacks.