tmp=$(mktemp -d /tmp/sl-fugitive-test.XXXXXX)
cd "$tmp"
sl init
sl config --local 'ui.username=Test User <test@example.com>'
sl config --local 'paths.default=https://github.com/octo/example.git'
printf '# Test Project\n' > README.md
printf 'one\n' > file1.txt
mkdir -p src
printf 'print("hello")\n' > src/main.py
sl add README.md file1.txt src/main.py
sl commit -m base
printf 'two\n' >> file1.txt
sl commit -m stack-one
printf 'three\n' >> file1.txt
sl commit -m stack-two
sl bookmark feature -r .
sl prev
printf 'working copy change\n' >> file1.txt
printf 'new file\n' > new.txt-
:Sopens smartlog - ANSI colors render correctly
- Workspace status line shows (clean/dirty/conflict)
-
<CR>opens changeset detail,qreturns to log -
dopens unified diff -
Dopens side-by-side diff (file picker if multi-file),qreturns -
goruns goto, refreshes -
ccedits commit message -
rrrebases commit onto prompted destination -
rsrebases commit and descendants -
raabsorbs working changes -
guundoes last operation -
Rrefreshes, cursor stays in place -
gs→ status,gb→ bookmark,gl→ back to log -
g?shows help
- Shows changed files
-
=toggles inline diff,=inside block collapses it -
<CR>opens file,oopens in split (status stays) -
dshows diff,Dside-by-side -
xreverts tracked file, deletes untracked file -
dddeletes file from filesystem -
o/d/D/xwork from inside expanded inline diff
-
:S diffshows working copy diff -
:S diff file1.txtshows file-specific diff -
Dopens side-by-side -
oopens file in editor
-
:S describeopens editor for current commit -
:wsaves,qaborts -
:S commitcreates new commit
-
ccreates,ddeletes,mmoves,rrenames -
gogoes to bookmark commit
- Opens scroll-locked split
- Annotation column shows user + node (no content leaking)
-
<CR>opens changeset detail -
qcloses cleanly
- Opens URL from file buffer
- Line number included
-
:S <tab>completes commands -
:S diff -r <tab>completes revisions
-
qnever quits Neovim - No stray
[No Name]buffers accumulate