main ece7682

RELEASING.md RawHistoryFolder

Releasing vev

Releases are cut by tagging: git tag -s v0.X.Y -m v0.X.Y && git push origin v0.X.Y. origin is ermite (git.bnema.dev). Its release workflow cross-compiles linux/amd64, linux/arm64 and darwin/arm64 (CGO_ENABLED=0), publishes the release on git.bnema.dev with checksums.txt, and pushes the vev-bin PKGBUILD to AUR (stable tags only: skip_upload: auto skips AUR for -rc.*/-alpha.* prerelease tags). The GitHub mirror receives the tag but publishes nothing.

Checklist

  1. main is green on ermite CI (ermite run list vev).
  2. Tag and push. Watch: ermite run list vev, then ermite run watch vev <n>.
  3. Verify the release: ermite release view vev v0.X.Y shows three archives, checksums.txt and the grouped changelog.
  4. On Linux amd64, download the installer from the exact tag, inspect it, then run it for that same version:
    installer=$(mktemp)
    curl -fsSL https://git.bnema.dev/vev/raw/v0.X.Y/install.sh -o "$installer"
    less "$installer"
    VEV_VERSION=v0.X.Y sh "$installer"
    rm -f "$installer"
    
    Confirm vev --version prints vev 0.X.Y (commit ..., built ...).
  5. Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin picked up the new version.

If the release publishes but AUR fails

Do not delete or re-push the tag. The ermite release is the source of truth; only the PKGBUILD push failed (usually SSH/key, secret AUR_KEY). Fix the cause, then either:

  • Re-run the failed job (ermite run rerun vev <n> --failed), which re-executes goreleaser idempotently for the same tag, or
  • For manual recovery, clone ssh://aur@aur.archlinux.org/vev-bin.git, update its existing PKGBUILD for the exact tag using that release's checksums.txt, and regenerate .SRCINFO with makepkg --printsrcinfo > .SRCINFO. Review the diff, then commit and push only the AUR repository.

If AUR publishes but the release fails

Do not delete or re-push the tag. Fix the workflow failure and rerun it (ermite run rerun vev <n> --failed); if necessary, repair the release with ermite release upload vev v0.X.Y <files> --clobber, then verify both publication targets before proceeding.

Version stamping

vev --version reads internal/app.{version,commit,date}, stamped via ldflags in .goreleaser.yaml. Local builds report 0.1.0-dev.

source
1# Releasing vev
2
3Releases are cut by tagging: `git tag -s v0.X.Y -m v0.X.Y && git push origin v0.X.Y`.
4`origin` is ermite (git.bnema.dev). Its `release` workflow cross-compiles
5linux/amd64, linux/arm64 and darwin/arm64 (`CGO_ENABLED=0`), publishes the
6release on git.bnema.dev with `checksums.txt`, and pushes the `vev-bin`
7PKGBUILD to AUR (stable tags only: `skip_upload: auto` skips AUR for
8`-rc.*`/`-alpha.*` prerelease tags). The GitHub mirror receives the tag but
9publishes nothing.
10
11## Checklist
12
131. main is green on ermite CI (`ermite run list vev`).
142. Tag and push. Watch: `ermite run list vev`, then `ermite run watch vev <n>`.
153. Verify the release: `ermite release view vev v0.X.Y` shows three archives,
16   `checksums.txt` and the grouped changelog.
174. On Linux amd64, download the installer from the exact tag, inspect it,
18   then run it for that same version:
19   ```sh
20   installer=$(mktemp)
21   curl -fsSL https://git.bnema.dev/vev/raw/v0.X.Y/install.sh -o "$installer"
22   less "$installer"
23   VEV_VERSION=v0.X.Y sh "$installer"
24   rm -f "$installer"
25   ```
26   Confirm `vev --version` prints `vev 0.X.Y (commit ..., built ...)`.
275. Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin
28   picked up the new version.
29
30## If the release publishes but AUR fails
31
32Do **not** delete or re-push the tag. The ermite release is the source of
33truth; only the PKGBUILD push failed (usually SSH/key, secret `AUR_KEY`). Fix
34the cause, then either:
35
36- Re-run the failed job (`ermite run rerun vev <n> --failed`), which
37  re-executes goreleaser idempotently for the same tag, or
38- For manual recovery, clone
39  `ssh://aur@aur.archlinux.org/vev-bin.git`, update its existing PKGBUILD for
40  the exact tag using that release's `checksums.txt`, and regenerate
41  `.SRCINFO` with `makepkg --printsrcinfo > .SRCINFO`. Review the diff, then
42  commit and push only the AUR repository.
43
44## If AUR publishes but the release fails
45
46Do **not** delete or re-push the tag. Fix the workflow failure and rerun it
47(`ermite run rerun vev <n> --failed`); if necessary, repair the release with
48`ermite release upload vev v0.X.Y <files> --clobber`, then verify both
49publication targets before proceeding.
50
51## Version stamping
52
53`vev --version` reads `internal/app.{version,commit,date}`, stamped via
54ldflags in `.goreleaser.yaml`. Local builds report `0.1.0-dev`.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 12

Tags 11

↑↓ moveenter openesc close