Come gestire le versioni con più funzionalità in stati diversi?

4

Abbiamo una struttura ramificata di:

  • più rami dev per ciascuna nuova funzionalità principale
  • Filiale principale, incorporata da un ramo dev una volta che una funzione è pronta per il test
  • Rilasciare il ramo, unificato in Main dopo che una funzione è pronta per la produzione

Spesso abbiamo nuove funzionalità completate all'incirca nello stesso momento che finiscono in Main, con lo stesso codice sorgente modificato. Quindi la caratteristica A può essere dichiarata pronta per la produzione e deve essere distribuita, mentre la caratteristica B richiede più lavoro.

Una volta che le modifiche sono state incorporate in Principale, in particolare con più revisioni delle funzioni A e B, la loro identità come funzioni separate viene persa . Diventa quindi rischioso e difficile da promuovere solo uno di questi alla produzione. Usiamo TFS e non so se questo è uno dei suoi limiti.

Qual è il modo migliore per risolvere questo problema? Dovremmo utilizzare una diversa strategia di ramificazione o un DVCS risolverlo?

    
posta Alex Angas 17.01.2013 - 01:28
fonte

2 risposte

4

Non unire a main (o trunk) per il test. Il tronco dovrebbe sempre essere un codice "pronto all'uso", il che significa che potrebbe non avere tutte le funzionalità, ma non essere codice non funzionante.

Pensa a trunk come codice che puoi rilasciare in qualsiasi momento.

Verifica i tuoi rami e quando passano, unisci al tronco, esegui immediatamente un test di integrazione e poi taggalo e distribuisci quando sei pronto. Se il nuovo codice fallisce l'integrazione, quindi ripristina, unisci le modifiche dal tronco al ramo e quindi correggi il problema. Una volta che il ramo funziona, risciacqua e ripeti.

Non perderai la cronologia perché puoi sempre passare all'indietro attraverso i log (presumendo che tu stia usando qualcosa di sano, CVS / VSS non sono sani di mente).

    
risposta data 17.01.2013 - 01:39
fonte
4

Devi avere qualcuno che spinga regolarmente le modifiche da Main a ogni sottoprovincia. Eseguire i test sui rami di sviluppo individualmente. Una volta che una funzionalità è stata approvata per il rilascio, le sue modifiche devono essere unite agli altri rami della funzione tramite Principale. Quindi premere per rilasciare.

Il rilascio dovrebbe essere eseguito su base FCFS a meno che non ci siano dipendenze.

Avere caratteristiche diverse che modificano lo stesso codice può causare il fallimento del tuo strumento di fusione e un mal di testa per alcuni poveri anima.

    
risposta data 17.01.2013 - 03:55
fonte

Leggi altre domande sui tag