Domanda

Se hai un progetto, che rilascia una libreria e un'applicazione, come gestisci i numeri di versione tra i due.

Esempio: il tuo progetto fornisce una libreria che converte formati di file diversi l'uno nell'altro. La libreria viene rilasciata per l'inclusione in altre applicazioni. Ma rilasci anche un'applicazione a riga di comando, che utilizza questa libreria e implementa un'interfaccia per la funzionalità.

Le nuove versioni della libreria portano a nuove versioni dell'applicazione (per utilizzare tutte le nuove funzionalità), ma le nuove versioni dell'applicazione potrebbero non attivare nuove versioni della libreria. Ora come vengono gestiti i numeri delle versioni: completamente indipendenti o la versione della libreria e dell'applicazione dovrebbe dipendere in qualche modo?

È stato utile?

Soluzione

Direi usare numeri di versione separati e ovviamente documentare quale versione minima della libreria è richiesta per ogni versione dell'app. Se hanno sempre lo stesso numero di versione e si verifica sempre l'app solo con la versione della libreria con numero uguale, allora non sono realmente componenti separati, quindi non dire che lo sono. Rilasciare l'intero lotto in un'unica soluzione.

Se li rendi separati, puoi comunque assegnare loro lo stesso numero di versione quando è appropriato, ad esempio dopo una grave interruzione della compatibilità potresti rilasciare la versione 2.0 di entrambi contemporaneamente.

Il seguente esempio illustra: xsltproc (un'app da riga di comando) viene rilasciato come parte di libxslt (una libreria), quindi non ha un proprio numero di versione. Ma libxslt dipende da altre due librerie e i numeri di versione di questi sono indipendenti.

$ xsltproc --version
Using libxml 20628, libxslt 10120 and libexslt 813
xsltproc was compiled against libxml 20628, libxslt 10120 and libexslt 813
libxslt 10120 was compiled against libxml 20628
libexslt 813 was compiled against libxml 20628

Altri suggerimenti

Numeri di versione completamente indipendenti, ma l'app a riga di comando (o qualsiasi altra dipendente) dovrebbe indicare su quale versione della libreria è stata compilata la sezione della guida o un banner.

In questo modo sarai in grado di dire quale funzionalità avranno le app e ridurre la potenziale confusione, soprattutto dato che qualcuno potrebbe compilare una versione più recente dell'app contro una vecchia libreria per qualsiasi motivo. Inoltre, le disaccoppi e puoi aggiungere funzionalità alla libreria senza dipendere dal rilascio di una nuova versione dell'app e così via.

Se sei sicuro che vorrai sempre che tutte le app e la libreria vadano in blocco, potresti usare gli stessi numeri, ma questo aggiunge un vincolo per un motivo non valido.

Abbiamo creato un'applicazione che utilizza un framework. Manteniamo numeri di versione separati per entrambi.

Funziona bene, soprattutto che ora il framework e l'applicazione sono diventati abbastanza grandi da poter essere sviluppati da diversi team.

Quindi la mia opinione ... mantieni separati i numeri di versione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top