Stai parlando del Promotional Model - Il documento di Perforce ne mette in evidenza i problemi: comunicare i ruoli mutevoli delle code line e spostare il lavoro tra le filiali.
Un'espansione sulle mie opinioni dei problemi elencati:
1) Modifica politica di code-lines:
Ogni linea di codice ha una politica, che si tratti di scritto e formalizzato, o interamente implicita in un la testa dello sviluppatore Definisce es:
- chi è autorizzato ad impegnarsi al codice linea
- quanti test è richiesto (ad esempio fare l'unità test devono passare, test di regressione, test completo del sistema)
- quante persone hanno a che la revisione del codice cambia
- che tipo di cambiamenti sono ammessi
Con l'approccio trunk, le policy rimangono fisse, quindi sono più facili da annotare, il che rende più facile la comunicazione (più importante in un team più grande).
ad es.Tronco:
- qualsiasi sviluppatore può commettere
- alcun cambiamento
- unit test devono passare
- revisione del codice dopo commettere
ramo Versione:
- unico sviluppatore di manutenzione
- solo bug fix
prova prove + regressione
- unità
- revisione del codice da 2 altro sviluppatore prima di commettere
ramo Tag:
- non commette dopo la creazione
Developer privato branch:
- Solo i controlli per gli sviluppatori in
- Qualsiasi cambiamento
- Testing necessario solo prima di fondersi al tronco
- La revisione del codice prima di merge al tronco
Se avete il modello di promozione, allora si ha una politica durante lo sviluppo principale, quindi devi dire a tutti quando cambi la politica mentre ti prepari per il rilascio, poi un'altra politica (per la riga di codice) una volta che la linea è stata rilasciata.
Il modello di promozione è facile da raggiungere, si mappa direttamente sul modo di lavorare non di controllo. Ma fa male una volta che inizi a diventare grandi squadre.
Se si osserva lo sviluppo del kernel Linux, è possibile vedere la tensione tra il modello promozionale e il modello Trunk: l'albero di Linus è promozionale - passa attraverso i cicli tra la finestra di fusione e il periodo di stabilizzazione/rc. Ma Linux-next e -mm sono sorti per dare una linea più simile a un tronco.
Gli SCM/VCS distribuiti sono in qualche modo diversi in ogni caso, le politiche non devono essere distribuite a tutti gli sviluppatori perché ogni sviluppo ha i suoi alberi e modifica quando vuole.
I progetti open source soffrono del problema che non possono costringere le persone a eseguire il lavoro di lavoro di stabilizzazione di un rilascio, dopo la derivazione dal trunk. Pertanto, il modello di promozione è più importante come metodo per forzare gli sforzi di stabilizzazione, piuttosto che solo per lavorare sulle funzionalità.
2) Moving lavoro:
Uno sviluppatore potrebbe essere al lavoro su una funzione quando la politica per la linea su cui sta lavorando modifiche al bug-fix solo, ha ora bisogno di cambiare la sua copia di lavoro ad un code-diverso linea. Questo può variare da facile a estremamente difficile a seconda del sistema SCM in uso. Questo problema non si verifica se lo sviluppatore sta lavorando su trunk, poiché il loro lavoro sta andando sempre al trunk.Se lo sviluppatore si trova su una diramazione privata o caratteristica, il loro lavoro influirà solo sul trunk (e sulla release).
Se una funzione è già archiviata, ma viene ritardata dalla versione in cui si trova attualmente, è necessario capire come rimuoverla. Questo problema esiste ancora con il modello di trunk, ma potrebbe essere un po 'più facile da risolvere: scegliere le cose da trunk per il rilascio. Qui è dove aiutano i rami di funzionalità, ma hanno un costo di integrazione.
+1 per il collegamento all'articolo eccellente! – RichardOD
Ottimo articolo, grazie Douglas. – Sebastian
Grande - ottengo 6 voti positivi, e la domanda è stata fatta in CW: -) ... –