Skip to main content

Version control systems

Sapling and Jujutsu are version control systems that can work in a Git repository: sl and jj read and write .git/, and Git commands still work. So git-splice can run next to them, within limits. The pages run each one on the same library and monorepo as git submodule and git subtree.

  • Sapling: sl subtree imports a repository into a folder and merges its changes, recording the sync point in each commit's metadata, and sends nothing back.
  • Jujutsu: jj has nothing built in for a library in a folder yet, and doesn't see inside submodules. A splice is files to jj, but git-splice needs Git back on a branch first.
SaplingJujutsu
In a Git repository.git/sl/ next to Git's data; sl clone makes a repository without itcolocated: .jj/ next to .git/
Library in a foldersl subtree import and mergenone released
Sync point recordedin each commit's metadata, an extra header to Gitnone
Changes back to the librarya patch by handnone
Git's HEADon the branch after sl commit, detached after sl gotodetached at @- after jj commit or jj new
git-splice next to itworks on a branch; sl amend leaves Git's index behindworks after jj bookmark set and git checkout
What git-splice could doSaplingJujutsu