Rifiuta il rilascio se il tag non e' arrivato sul remoto
Il push dei tag non porta con se' i commit: a ramo indietro il tag punta a un oggetto che il remoto non conosce e viene rifiutato. La creazione della release pero' non falliva — Gitea, non trovando il tag, lo crea da se' sulla testa del ramo predefinito. Sarebbe stata pubblicata una release che dichiara un commit e allega il codice di un altro, senza che niente lo segnalasse. Adesso il tag viene riletto dal remoto dopo il push e il rilascio si ferma se non c'e', dicendo di spingere il ramo. I commit restano da spingere a mano: quando farlo lo decide chi lavora, non la catena di rilascio. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -537,12 +537,34 @@
|
||||
<WriteLinesToFile File="$(CurlCfg)" Overwrite="true"
|
||||
Lines="header = "Authorization: token $(GToken)"" />
|
||||
|
||||
<!-- Il tag esiste gia' in locale (l'ha creato Pacchetto, o c'era prima).
|
||||
Qui si prova solo a spingerlo: se il remoto non risponde la release lo
|
||||
crea da se', quindi un fallimento non deve fermare il rilascio. -->
|
||||
<!--
|
||||
Il tag esiste gia' in locale: l'ha creato Pacchetto, o c'era prima. Qui va
|
||||
spinto, e va verificato che ci sia arrivato.
|
||||
|
||||
Non e' una formalita'. Il push qui sotto spinge i tag, non i commit: se il
|
||||
ramo e' indietro, il tag punta a un oggetto che il remoto non conosce e il
|
||||
push viene rifiutato. A quel punto la creazione della release non
|
||||
fallisce — Gitea, non trovando il tag, lo crea da se' sulla testa del ramo
|
||||
predefinito. Verrebbe pubblicata una release che dichiara di essere il
|
||||
commit X mentre il codice allegato e' il commit Y, e nessuno se ne
|
||||
accorgerebbe. Meglio fermarsi e dire cosa manca.
|
||||
|
||||
I commit non si spingono da qui: quando spingere il ramo lo decide chi
|
||||
lavora, non la catena di rilascio.
|
||||
-->
|
||||
<Exec Command="git push --tags" WorkingDirectory="$(Radice)" ContinueOnError="true"
|
||||
StandardOutputImportance="low" StandardErrorImportance="low" />
|
||||
|
||||
<Exec Command="git ls-remote --tags origin refs/tags/$(Tag)" WorkingDirectory="$(Radice)"
|
||||
ConsoleToMSBuild="true" ContinueOnError="true" StandardOutputImportance="low">
|
||||
<Output TaskParameter="ConsoleOutput" PropertyName="TagSulRemoto" />
|
||||
</Exec>
|
||||
|
||||
<Error Condition="'$(TagSulRemoto)' == ''"
|
||||
Text="Il tag $(Tag) non e' arrivato sul remoto, quasi sempre perche' il ramo e' indietro.%0AGitea creerebbe la release sulla testa del ramo predefinito: il codice allegato non corrisponderebbe al commit dichiarato.%0A%0ASpingi il ramo e rilancia: git push" />
|
||||
|
||||
<Message Importance="High" Text=" tag $(Tag) sul remoto" />
|
||||
|
||||
<!-- Release gia' presente? -->
|
||||
<Exec EchoOff="true" ContinueOnError="true" StandardOutputImportance="low"
|
||||
Command="curl -s -K "$(CurlCfg)" -o "$(RispostaJson)" "$(Api)/releases/tags/$(Tag)"" />
|
||||
|
||||
Reference in New Issue
Block a user