Vai al contenuto

Versionamento

Questo pacchetto è un contratto pubblicato, quindi il versionamento è semver rigoroso. Il senso stesso di questo repository è la stabilità: i plugin referenziano il pacchetto, e l'host fornisce l'assembly a runtime, quindi una modifica incauta rompe ogni plugin sul campo.

Regole

ModificaBumpLabel PR
Cambiare la firma di un metodo, aggiungere un metodo a un'interfaccia esistente, o rinominare un membroMAJORbreaking-change
Aggiungere una nuova interfaccia opzionale, o un metodo con implementazione predefinitaMINORfeature
Modifiche a doc / metadati / packagingPATCH(predefinito - nessuna label necessaria)

Come viene risolta la versione

  • application.properties contiene la <version> corrente; è l'unica fonte di verità e viene letta in $(Version) da src/Directory.Build.props durante build/pack.
  • release-drafter (.github/release-drafter.yml) risolve la prossima versione in base alle label sulle PR mergiate: breaking-change → major, feature → minor, tutto il resto → patch. Redige anche il changelog.
  • Il taglio della release esegue quindi il flusso di pubblicazione, che sincronizza application.properties con il tag prima della pacchettizzazione. Vedi pubblicazione.

Stabilità della versione di assembly

Directory.Build.props fissa la versione di assembly a MAJOR.MINOR.0.0 (mentre FileVersion/InformationalVersion portano la versione completa). Un plugin costruito contro qualsiasi MAJOR.MINOR.x si lega a un'unica assembly MAJOR.MINOR.0.0, così i bump di patch non forzano una ricompilazione di ogni plugin e non causano errori di caricamento dei tipi tra versioni patch. Solo un bump MINOR o MAJOR cambia la versione di assembly di binding - un motivo in più per seguire esattamente la tabella sopra.