Een proeftag telt niet als laatste release #1593
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1593
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/versiepoort-negeert-proeftag"
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?
Wat er misgaat
check-version-bumpbepaalt zijn basislijn metgit describe --tags --abbrev=0 --match 'v*'. Die glob vangt ook een pre-release-tag. Metv0.4.7-rc1in de kloon las de poort een uitgebrachte 0.4.7; pubspec staat op 0.4.6, en dat heet vanaf 0.4.7 een verboden stap terug:Gevolg:
make checkviel om op élke tak, ook op takken die de versie niet hadden aangeraakt. De poort zit vóór de testsuite incheck-locked, dus hij kapt de hele run af.Die tag zegt in zijn eigen boodschap wat hij is: "Proeftag: toetst de Windows-installerbouw op de spiegel (#1583). Geen echte release."
Reikwijdte — eerlijk gehouden
v0.4.7-rc1staat op geen enkele remote.git ls-remote --tags originen… mirrorgeven allebeiv0.4.6als laatste. Het is dus geen kapottemain, maar het restant van een release-repetitie op één machine.Dat maakt de fout niet minder echt:
git describeleest wat de lokale kloon heeft. Eén repetitie legt daar alle takken plat tot iemand de tag met de hand opruimt, en de volgende échte rc-tag doet hetzelfde bij iedereen die hem ophaalt. Een poort die omvalt op een tag die niemand als release bedoelde, is een vals alarm op precies het instrument dat een echt alarm geloofwaardig moet houden.De reparatie
--exclude '*-*'bijgit describe. Een koppelteken achter de versiekern is exact SemVer's pre-release-markering, en SemVer zegt hetzelfde als de poort zou moeten: een pre-release staat lager dan de release die hij voorafgaat, dus hij kan nooit de laatst uitgebrachte versie zijn.Blijft er alleen een proeftag over, dan is er geen basislijn en zwijgt de poort — het bestaande, gedocumenteerde overslaan-pad (een ondiepe kloon zonder tags). Liever niets zeggen dan iets verzinnen.
Regressietest
Drie tests die een echte wegwerp-repo bouwen (
git init, commits, tags) enlastReleasedVersiondaarop draaien. Dat is geen omweg: de uitsluiting zit in een argumentenlijst voorgit describe, en niets minder dan een echtegit describebewijst dat hij werkt. Daarvoor kreeg de functie één optioneleworkingDirectory-parameter, met de reden erbij in de dartdoc.Zonder de vlag vallen twee van de drie om:
Poorten
make check— groen (EXIT=0, 9618 tests, dekking 87,3 %, per-bestandsvloer 0 onder de vloer)make check-secrets— schoon (gitleaks + trufflehog, werkboom én historie)make sast— 0 bevindingen (semgrep, lokale regels)Bewaker overgeslagen, bewust. Deze wijziging raakt het bestandsformaat niet, de opslag niet, geen afhankelijkheid, geen uitgaand verkeer en geen publieke belofte — het is gereedschap in
tool/plus zijn test.