⚙️ 🤖 VERSION=-Variable im Script beim Release mitbumpen (Script meldet veraltete Version) #2
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
holm.tools.public/release#2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
██░░░░░░░░███████░░░VERSION=/-V████████░░█████████░█████░░░░░Befund
release.shermittelt die nächste Version übergit cliff --bumped-version(Zeile 31) und schreibt sie in Tag, CHANGELOG und Forgejo-Release — die im Script selbst hartkodierteVERSION=-Variable bleibt unangetastet. Die Selbstauskunft eines Tools (-V) driftet damit bei jedem Release, sofern nicht von Hand vorgebumpt wird.Belegter Fall:
holm.tools.public/pwgenz6c— Tag v0.4.0,./pwgenz6c -Vmeldet0.3.0. Die Drift war dort seit 2026-07-12 als bekannte Wackelkante mit dem Workaround „vor jedem PCR manuell vorbumpen" geführt; der Workaround ist beim v0.4.0-Release ausgefallen. Das Muster betrifft potenziell jedes Bash-Single-File-Tool der Distribution.Vorschlag
Vor dem Tag-Schritt: in einer konfigurierbaren Datei (Default: das gleichnamige Script im Repo-Root) eine Zeile
^VERSION="..."auf$nextohnev-Präfix setzen und in denchore(release)-Commit aufnehmen. Opt-in/abschaltbar, damit Repos ohneVERSION=-Konvention unberührt bleiben; kein Treffer ⇒ stiller Skip statt Abbruch.Auslöser: #4 (pwgenz6c VERSION-Drift). Vorschlag aus einem Fremdrepo — Umsetzung entscheidet Holm.
In Arbeit (v00, 2026-08-28) — Holm-Go auf die Umsetzung.
Geplanter Eingriff, minimal-invasiv:
git cliff: tracked Dateien im Repo-Root (keine Rekursion) auf eine Zeile^VERSION="…"prüfen, Treffer persedauf die ermittelte Version ohnev-Präfix setzen, in denchore(release)-Commit aufnehmen. Kein Treffer ⇒ stiller Skip mit Hinweiszeile, kein Abbruch.--no-version-bump; Argument-Parsing wird dafür von „nur$1 == --yes" auf eine Schleife umgestellt (unbekannte Option ⇒ Fehler statt stillem Ignorieren — Verhaltensänderung, absichtlich).ERR-Trap: bricht das Script nach dem Bump und vor dem Commit ab, wird der Bump zurückgenommen, damit keine nicht-releasete Version im Working Tree stehen bleibt.Umgesetzt und getestet — Commit
6d51c65, viafeat/2-version-bumpnachdevgemerged (9d9edb4, gepusht). Über den Symlink~/bin/release→ Checkout ist der Schritt sofort in allen Repos scharf, auch ohne Tag.Was drin ist
git ls-files | grep -v '/') mit exakter Zeile^VERSION="…"$werden auf die ermittelte Version ohnevgesetzt und in denchore(release)-Commit aufgenommen. Kein Treffer ⇒ Hinweiszeile, kein Abbruch.--no-version-bumpschaltet den Schritt ab.$@. Verhaltensänderung: unbekannte Optionen brechen ab (❌ unbekannte option: …) statt still ignoriert zu werden — vorher wurde alles außer$1 == --yesverschluckt.ERR-Trap zwischen Bump und Commit nimmt Bump-Dateien undCHANGELOG.mdzurück, damit kein nie-releaseter Versionsstand liegen bleibt und der nächste Lauf nicht am Dirty-Check hängt.Testbeleg
Wegwerf-Repo im Scratchpad mit bare-Remote, echtem
git cliff/git tag -s/git push, nur der Forgejo-API-Call gestubbt:toolim Root mitVERSION="0.1.0"0.1.1, im Tag enthaltensub/nested.shmitVERSION=VERSION="9.9.9"mitten in einer TextzeileVERSION=--no-version-bump0.1.1--bogusgpg.programkaputt)Beim Testen gefunden und gefixt: die erste Trap-Fassung nutzte
git checkout -- <datei>— das schreibt aus dem Index zurück, in dem der Bump durchgit addbereits lag, und stellte damit genau die Änderung wieder her, die verworfen werden sollte. Korrekt istgit checkout HEAD -- <datei>. Ohne den Integrationstest wäre der Rollback als Attrappe durchgegangen.shellcheckundbash -nsauber.release.shselbst trägt keineVERSION=-Zeile und läuft damit in den Skip-Pfad — Dogfooding wäre konsequent, ist aber nicht Teil dieses Issues (im Pemmikan unter „Offene Punkte" notiert).Schließe: der beauftragte Mechanismus ist gebaut, belegt und im Feld. Der
main-Merge folgt mit dem nächsten Release dieses Repos (Release-Trigger bleibt bei Holm).