Sapling
sl worktreenow works in native Git repositories. These are checkouts made withgit clone, whereslruns directly in the.gitcheckout.sl worktree add PATH [--label LABEL] [-r REV]creates a linked checkout withgit worktree add(detached).sl worktree listshows the main and linked checkouts with their labels.sl worktree label PATH LABELsets a label, which is stored in the checkout's Git admin directory.sl worktree remove PATHandsl worktree remove --allremove linked checkouts. This includes checkouts created withgit worktree add.sl worktreeis now included in builds without EdenFS, such as the open source builds.- Checkouts created with
sl clone(.slmode) are not supported. Usegit clone, then runslin the checkout.
sl dropis now enabled by default.sl drop -r REV...removes one or more commits from a stack and rebases their descendants.- If rebasing stops on a conflict, use
sl drop --continueorsl drop --abort. - Revisions must be given with
-r.
histeditimprovements:--plan RULEgives the plan on the command line, one rule per flag, oldest commit first.- Example:
sl histedit --plan 'pick 8ef592ce7cc4' --plan 'roll 5339bf82f0ca' --plan 'pick 252a1af424ad'.
- Example:
- New
intoverb (abbreviatedi). It folds the previous commit into this one and keeps this commit's message, the opposite ofroll. --show-planwith no histedit in progress prints the plan a new histedit would start with, and changes nothing.- After a histedit, dropped commits (
dropping changeset ...) and combined commits (folded A, B -> C "summary") are listed. These lines are not shown withHGPLAINor-T.
- Commands that rewrite commits (rebase, amend, absorb, histedit, drop, ...) list their
old -> newlines in stack order. When the list is truncated, the bottom and top commit of each stack are always shown. Set the limit withtweakdefaults.showupdatedlimit(default 10). uncommitimprovements:- It can rewrite a commit in the middle of a stack. Descendants are restacked the same way as for
amend, followingamend.autorestack. - A partial
uncommit FILEnow records the result as a new version of the commit. - Copy and rename records are kept.
- On a commit with descendants, uncommitting every change without
--keepnow aborts with a hint to use--keep.
- It can rewrite a commit in the middle of a stack. Descendants are restacked the same way as for
amend --to REV FILE...no longer loses the pending state (added, removed, copied) of files it did not amend.commit -iandamend -ibuild the new commit in memory instead of temporarily rewriting files in the working copy. Disable with--config record.inmemory=false.commit,amend,metaeditand other commands that take-mwarn when a message title contains a typed\nescape instead of a newline. Disable with--config commit.check-escaped-newlines=false.rebasewarns when the destination's ancestry contains older versions of the stack being rebased, which would move the stack back onto obsolete commits. Configure withrebase.obsolete-dest-mode(warn,prompt,abort).--keepskips the check.splitnow aborts when given-mor-l. Before, it ignored them.experimental.evolution.allowdivergenceis renamed tomutation.allow-divergence. The old name still works..gitmode: when one submodule fails to check out, checkout continues with the remaining submodules and reports all failures together.diff -Bnow prints correct hunk offsets. A negative-Uordiff.unifiedis now ignored; before, it produced hunks that could not be applied.- Merges where one side changes a file's content and the other changes its executable bit no longer crash. Rebase and
amend --tokeep both changes. - Fixed crashes in
sl cat -Tand-Tjsonon non-UTF-8 files, insl importwhen rejecting a binary hunk, insl pathsoutside a repository, and in thex~nrevset with a very largen. - Computing the parents of large sets of scattered commits is faster.
- Various other improvements and fixes.
ISL
See here.
Community Contributions
- @martinvonz made
IdDag::parents()linear in the number of spans, speeding up parent lookups for sets of many scattered commits (#1475). - @netproteus fixed Cargo dependency resolution in the OSS build (#1477).
- @huntie made ISL look up pull requests in the
upstreamremote's GitHub repo when there is one, matchingsl pr(#1424). - @huntie fixed ISL's repo name and dropdown in VS Code workspaces with nested Git repos that are not submodules (#1423).