DVCS e diverse versioni dello stesso prodotto

5

Diciamo che abbiamo un'applicazione, con due (o più) versioni differenti. Per esempio. Edizioni Professional e Lite.

Quale sarebbe il modo migliore per mantenere l'origine sotto controllo di versione (in particolare DVCS). L'assunto qui è che alcuni o gran parte del codice sono comuni, ma l'edizione Professional ha anche del codice in più.

Quale sarebbe il modo ottimale di versionare il codice con un sistema come git o Mercurial?

    
posta Nikos Steiakakis 23.12.2010 - 15:54
fonte

3 risposte

9

Utilizza la modularità della tua lingua per organizzare una linea di prodotti software , piuttosto che la versione sistema di controllo. Molto semplicemente, il processo di unione non è qualcosa che vuoi essere una parte regolare della costruzione dei tuoi prodotti. Piuttosto, il design del tuo prodotto dovrebbe già tenerne conto .

Considerando la famiglia di prodotti software a livello di progettazione, ciò renderà molto più chiaro agli sviluppatori quali sono i punti di variazione: i punti di variazione saranno evidenti nella progettazione, piuttosto che impliciti come differenze di codice sorgente.

Ciò faciliterà anche i test degli sviluppatori: qualsiasi modifica apportata dovrebbe essere testata su entrambi i prodotti. Non vorrai apportare la stessa modifica due volte o fondere e annullare costantemente le modifiche man mano che si verificano.

Consulta la documentazione sulle linee di prodotti software per vedere le migliori pratiche per la tua lingua. Utilizzando queste tecniche, è possibile creare un terzo "prodotto" che è ottimizzato per il test. Ad esempio, l'utilizzo di dependency injection può essere il tuo meccanismo per entrambi i test e per avere varianti dello stesso programma.

    
risposta data 23.12.2010 - 18:36
fonte
2

Che si tratti di un DVCS o di un CVCS (centralizzato), l'idea è di definire due "moduli" (set di file) con:

  • uno è il codice comune
  • l'altro è le funzionalità per la versione "pro"

Quindi puoi organizzarli come sub-repos (Mercurial) o submodules (Git)
(o "esterno" con SVN ", o ...)

    
risposta data 23.12.2010 - 16:31
fonte
0

Non ho molta idea di Git o Mercurial. La sensazione comune è che dovresti avere una parte comune in un ramo e altre versioni in rami separati. Quando stai costruendo, la tua build dovrebbe essere abbastanza intelligente da estrarre il codice dalle filiali appropriate e compilare.

    
risposta data 23.12.2010 - 16:03
fonte

Leggi altre domande sui tag