Detection
On startup, Lift walks up the directory tree from the working directory looking for VCS markers in priority order:.sl— Sapling.git— Git.hg— legacy Sapling (Mercurial heritage)
.sl and .git exist in the same ancestry, Sapling takes precedence.
Detection runs once per invocation and is cached for the lifetime of the process.
Supported operations
Every tool in the pipeline uses the same VCS abstraction. The underlying commands differ per backend, but the behavior is identical.The main branch name defaults to
main and can be overridden via the main_branch config setting. PR draft mode is controlled by the pr.draft config setting.Pull request workflow
The--pr flag triggers PR creation or update after the pipeline finishes. The workflow differs by backend.
Sapling
Sapling has native PR support. Lift callssl pr submit --draft directly.
Git
Git PR submission requires the GitHub CLI (gh). When you submit a PR through Lift:
- Pushes the current branch with
git push --force-with-lease -u origin HEAD - Checks whether a PR already exists for the branch
- Creates a new draft PR, or updates the existing one
Dependency validation
Lift checks for required dependencies on startup:
Missing required dependencies cause Lift to exit with installation instructions. Missing optional dependencies produce a warning.
Commit tracking
Lift tracks which commits each tool has processed in~/.taho/lift/:
Preconditions
Before running the pipeline, Lift verifies:- Clean working directory — uncommitted changes cause an error
- Not on main — Lift refuses to amend commits on the main branch
- Non-empty diff — tools skip commits with no changes