Sembra che tu stia scavalcando le convenzioni normali solo per evitare le spese generali di processo / audit. Questo ... mi sembra preoccupato.
Quello che stai facendo è effettivamente creare un numero di versione aggiuntivo (la tua cifra PCI minore) un po 'intenzionalmente al fine di spostare i tuoi numeri di funzione / versione minore indietro di un posto, per non innescare più i tuoi criteri di controllo interno.
Comunque, arrivando alla tua domanda sul versioning semantico, le specifiche per il Semantic Versioning indicano :
Dato un numero di versione MAJOR.MINOR.PATCH, incrementare:
- Versione MAJOR quando si apportano modifiche API incompatibili,
- Versione MINORE quando si aggiunge funzionalità in modo compatibile con le versioni precedenti e
- Versione PATCH quando si apportano correzioni di bug compatibili con le versioni precedenti.
- Ulteriori etichette per i metadati pre-release e build sono disponibili come estensioni nel formato MAJOR.MINOR.PATCH .
Enfasi mia.
Quindi la domanda è: stai usando il quarto carattere per i metadati pre-release / build? O è fondamentalmente un'altra indicazione di versione che stai rilasciando?
Se "sì", le specifiche di versione semantica lo consentono. Se "no", tecnicamente non stai seguendo il controllo delle versioni semantico.
E come domanda secondaria di livello superiore e più discutibile, importa davvero?
Indipendentemente dal fatto che tu voglia seguirlo rigidamente o meno, è una decisione che tu e il tuo team dovete prendere. Lo scopo del versioning semantico è di aiutare con la compatibilità API:
Le correzioni di bug che non influiscono sull'API aumentano la versione della patch, le aggiunte / modifiche all'API compatibili all'indietro aumentano la versione secondaria e le modifiche all'API incompatibili all'indietro aumentano la versione principale.
Chiamo questo sistema "Semantic Versioning". In base a questo schema, i numeri di versione e il modo in cui cambiano trasmettono significato sul codice sottostante e su ciò che è stato modificato da una versione all'altra.
È un sistema che aiuta a renderlo più chiaro quando il controllo delle versioni influisce sugli utenti a valle dell'API.
Fintanto che la tua API è altrettanto chiara, non è un grosso problema il modo in cui scegli. Il versioning semantico sembra essere semplice, ad esempio se sto usando 3.4.2 e devo aggiornare a 3.4.10 So che posso farlo senza interrompere nulla. Se la nuova versione è 3.5.1 so che è retrocompatibile. E so che la versione 4.0.1 sarebbe un cambiamento decisivo.
Fa tutto parte del significato dei numeri di versione.
@enderland Sì, fondamentalmente. MAGGIORE (PCI) .MINOR (PCI) .FEATURE.HOTFIX + build. Fondamentalmente ci è permesso cambiare il 3o e il 4o componente senza coinvolgere PCI (e successivamente i signori PCI dell'azienda). Per me sembra che questo sia un po 'inventato, non sono sicuro che siano giustificati nel modo in cui gestiscono il numero di versione, ma non conosco abbastanza il PCI e il processo di audit per dire diversamente.
Ok, va bene. Hai un sistema che funziona per te e soddisfa le tue esigenze. Questo è il punto del controllo delle versioni.
Se la tua API è privata (solo internamente) non importa in che modo la tua versione fintanto che ha senso per te e per tutti coloro che la utilizzano. Dove conta il controllo delle versioni in un formato standard quando hai molti altri consumatori della tua API che devono sapere "cosa significa questa versione?"
Avere un sistema di versioning arbitrario confonderà le persone che sono abituate ad altri sistemi, come il versioning semantico. Ma se nessuno usa davvero il tuo sistema di controllo delle versioni tranne le persone che lo creano, non importa.