Examples

Split a dirty tree

text
$ git status --short
 M src/auth.py
 M src/api.py
 M tests/test_auth.py
 M README.md
?? src/rate_limit.py

$ imp split
→ feat(auth): add rate limiting to login
→ test(auth): cover rate-limit edge cases
→ docs: document new auth flags

split groups related files, stages one group at a time, and produces several reviewable Conventional Commits from one working tree.

imp split

Commit and push

shell
imp commit --all
imp commit --all --yes --push
imp commit --all --exclude 'fixtures/**' --whisper 'use IMP-42 as ticket'
imp commit

Open a pull request

text
$ imp pr --into main
→ Title: feat: rate limit auth endpoints
→ Body:  Adds per-IP rate limiting to login and registration…
imp pr

Resolve a merge

shell
imp merge feat/per-user-limits
# or, when Git is already stopped in a merge or rebase:
imp resolve

Each conflicted file is proposed separately. Accept, edit, choose ours or theirs, or stop without hiding the repository's merge state.

imp merge
imp resolve

Cut a release

text
$ imp release --minor
→ Bump: 0.0.53 → 0.1.0
→ Synced manifests and wrote changelog
→ Tagged v0.1.0 and pushed

release updates supported manifests, creates the changelog and tag, and rolls the operation back if a later step fails. --rc creates a prerelease; --stable promotes the stable line.

imp release

Ship a fleet

shell
cd ~/.katforge
imp fleet --patch --rc

Fleet discovers nested repositories and ships each dirty member independently.

imp fleet