Repository navigation
Releases: meta/sapling
Releases · meta/sapling
Release list
0.2.20261028-123539+7415fb2f
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).
0.2.20260929-102736+288e0c2d
Sapling
Important
This release contains security fixes. If you use sapling with untrusted repos, you should upgrade.
gotonow prints the commit it checked out.- Example:
sl goto mainends withchecked out 4c764e361100 "second". - Disable with
--config checkout.show-destination=false. Not shown with--quietorHGPLAIN.
- Example:
commitnow lists the files it changed after the new commit hash. Disable with--config commit.show-status=false.- Safer handling of obsolete (amended or rebased) commits.
gotoof an obsolete commit, and committing on top of one, now asks for confirmation. Checking out a stale hash is a common way to accidentally revive an old version of a commit and diverge a stack.HGPLAIN=1keeps the old behavior for scripts.
.gitmode improvements.sl worktree listnow lists Git worktrees. Adding and removing worktrees is not supported yet.- Repos using Git's reftable reference format are now supported.
sl pr submitcan use a review tool other than ReviewStack for the "Best reviewed with" link in the stack footer:[github] pull-request-review-url-template=https://review.example.com/{owner}/{repo}/pull/{number} pull-request-review-tool-name=MyReview
unshelvekeeps untracked files untracked when it has to rebase, including afterunshelve --continue.rebase --collapsevalidates the commit message before rebasing, rather than failing partway through.- The
bsearchrevset now supports non-linear history. subtree copyaccepts--no-commit. Pending subtree copies show insl statusand can be abandoned withsl goto --clean ..- Interactive prompts driven through a pipe now echo the selected response (
ui.promptecho). rebaseprefetches merge inputs in batches, and file and tree fetching uses less memory.- The pager no longer panics while restoring the terminal on exit.
- macOS releases are now Apple Silicon only. Intel Macs are no longer supported.
- Various other improvements and fixes.
ISL
See here.
Community Contributions
- @netproteus made the review link in
sl pr submitstack footers configurable (#1410).
0.2.20260811-150444+8fb02b32
Sapling
Important
This release contains security fixes. If you use sapling with untrusted repos, you should upgrade.
- Added experimental
-t | --mutationtoshowandlog.- Example:
sl show -tshows diff before/after an amend. - Example:
sl log -Gtpr "predecessors(.)"shows a chain of amends with an ASCII graph. - This is experimental and known incomplete (e.g. does not show diffs of commit message, and does not handle rebase)
- Example:
- Changed multiple
-mbehavior for commit message.- Example:
sl commit -m title -m bodynow uses"title\n\nbody"instead of"body"as the commit message. - Applies to all commands taking
-mas the commit message.
- Example:
ISL
See here.
Community Contributions
- @vegerot improved
scm-prompt.shzsh compatibility (#1325). - @Marukome0743 improved documentation about changing GitHub workflows (#1299).
- @vegerot updated the devcontainer image (#1323).
- @geraschenko improved renderdag for compact graph (#1293).
- @pfei-sa fixed ISL's "Goto" action hanging (#1353).
0.2.20260522-084851+1e764c94
0.2.20260317-201835+0234c21f
Sapling
Important
This release contains security fixes. If you use sapling with untrusted repos, you should upgrade.
- Improved
sl statusperformance for large.gitrepos. - Linux releases now use portable binaries that target a wide range of Linux distros, not limited to just Ubuntu.
- Various other improvements and fixes.
ISL
See here.
Community contributions
-
Documentation and website
- @JamBalaya56562 replaced
@theme/CodeBlockwith triple backticks in installation docs (#1038) - @Marukome0743 added hideable sidebar to the website (#1047)
- @JamBalaya56562 replaced
-
EdenFS OSS build
-
GitHub actions
- @salmanmkc upgraded GitHub Actions to latest versions for Node 24 compatibility (#1166, #1167)
- @ajaymenon fixed reviewstack.dev deploy by removing broken Docker container dependency (#1216)
-
GitHub
pr
0.2.20250521-115337+25ed6ac4
Sapling
- Various bug fixes and improvements.
ISL
See here.
Community contributions
-
streampager
- @ilyagr made streampager work without reading config files (#1011)
- @martinvonz fixed a Rust UB in
buffer.rs(#1025) - @martinvonz upgraded outdated streampager dependencies (#1008)
-
Documentation
- @JamBalaya56562 fixed
generate-command-markdown.py --commands(#1020) - @JamBalaya56562 fixed missing code block in
pull.md(#1017) andfold.md(#1040) - @Marukome0743 improved README (#1046)
- @Marukome0743 updated organization name (#1039)
- @matt-fff fixed typos in
signing.md(#1010) - @robinbrandt fixed typos in the scale docs (#1083)
- @trevorm4 imporved reviewstack README (#1080)
- @vincent-4 added
prto help output (#1022) - @vincent-4 fixed various typos (#1035)
- @JamBalaya56562 fixed
-
ReviewStack and
pr -
Development
- @stepancheg made
PYTHON_SYS_EXECUTABLEoptional (#1034)
- @stepancheg made
0.2.20241203-120811+a2174689
Sapling
- Sapling now supports
.gitmode
ISL
See here.
Community contributions
- @alex-statsig fixed ISL for GitHub Enterprise without merge queue support (#926)
- @daranday added arm64 Ubuntu 20.04 and 22.04 images useful for Raspberry Pi developers (#933)
- @vegerot updated scm-prompt for
.gitmode and betterchpwdhook support (#921, #985) - @vegerot added
corepacksupport for better package management (#935) - @vegerot improved
ghstart time by settingTCELL_MINIMIZE=1(#961) - @markbhasawut improved Python 3.12 compatibility by revising the lazy import blocklist (#977)
0.2.20240718-145624+f4e9df48
Sapling
- Links now enabled by default for PRs in the smartlog
ISL
The full list of ISL features is here.
Community contributions
- @horizon-blue fixed a
_STACK_SECTION_STARTrelated test (#846) - @bolinfest got rid of an unnecessary
decode()call (#862) - @bolinfest made it possible to
_strip_stack_information()to work with\r\n(#863) - @rejc2 added a “follower” tag on ISL for PRs (#877)
- @bolinfest fixed an issue where
github.preserve-pull-request-description=truewas adding\nto commit messages (#880) - @bolinfest expanded PR no. recognition support (#881)
- @zadlg fixed a Rust compilation error (#883)
- @randallb added a check for the websocket protocol of choice if HTTPs was being used (#886)
- @thb-sb fixed a runtime error where it was possible for a Python symbol to not be found (#896)
- @bolinfest made some changes to exclude the first line from body in new PRs (#899)
0.2.20240219-172743+3e819974
Sapling
- Enable smarter merge algorithms for open source version (see ‘sl help automerge’ for more information)
- Optionally limit the number of PRs created in each submission (#824)
- Trim commit description from SSL (#820)
- Fix AttributeError.name issue for Python < 3.10 (#825)
- Avoid linkifying example URL (#813)
ISL
The full list of ISL features is here.
- New DAG-based renderer
- Fill blank commit messages from previous commits
- Improvements to split UI tracking copied files
- Fix dragging commits in edit stack being misaligned with the cursor
- Node >= 16 is now required for running sl isl / sl web
0.2.20240116-133042+8acecb66
Sapling
- Support ‘--amend’ for copy and rename command (link)
- Enable cross-platform stdin listfile:pattern (link)
- Rewrite mergestage in Rust (link)
- Add configurable limits for files count in a commit (link)
- Use Rust status for every operations (link)
ISL
The full list of ISL features is here.
- Multiple improvements to Interactive Split
- Previewing system was rewritten with several improvements, such as commits not appearing duplicated during a rebase
- Added Bulk actions dropdown to the top bar to add actions that act on all commits at once