Si sviluppa nel bagagliaio e poi si dirama, o nel ramo di rilascio e quindi si unisce nuovamente? [duplicare]

2

Diciamo che abbiamo deciso di seguire una strategia di "ramificazione basata sul rilascio", quindi avremo un ramo per ogni versione e possiamo aggiungere aggiornamenti di manutenzione come sotto-rami da quelli.

Importa se noi:

  1. sviluppare e stabilizzare una nuova versione nel trunk e quindi "salvare" quello stato in un nuovo ramo di rilascio; o
  2. prima crea quel ramo di rilascio e unisci solo nel tronco quando il ramo è stabile?

Trovo che il primo sia più facile da gestire (meno la fusione necessaria), specialmente quando non ci sviluppiamo contemporaneamente su più versioni future. In circostanze normali lavoreremmo tutti sul trunk e lavoreremo solo sui rami rilasciati se ci sono bug da correggere.

A cosa serve realmente il tronco nell'ultimo approccio? Sembra essere quasi obsoleto, perché potrei creare un ramo di rilascio futuro basato sul più recente ramo rilasciato piuttosto che dal tronco.

Dettagli basati su commento qui sotto :

  • Il nostro prodotto è costituito da una piattaforma di base e un numero di moduli in cima; ciascuno è sviluppato e persino distribuito separatamente l'uno dall'altro.
  • La maggior parte dei membri del team lavora su molte di queste aree, quindi c'è una parziale sovrapposizione tra le persone.
  • Generalmente lavoriamo solo su una versione futura e non su tutte le versioni esistenti. Uno o due potrebbero funzionare su una correzione per una versione esistente per brevi periodi di tempo.
  • Il nostro lavoro non è compilato ed è un mix di script di shell Unix, file di configurazione XML, pacchetti SQL e altro - quindi non c'è modo di avere build di pulsanti che possono essere testati . Fatto manualmente, che è un po 'laborioso.
  • Un ciclo di rilascio è in genere di mezzo anno o più per la piattaforma di base; spesso 1 mese per i moduli.
posta Torben Gundtofte-Bruun 08.08.2014 - 10:45
fonte

1 risposta

1

È vero - se hai più "bauli", ognuno dei quali rappresenta un rilascio, non hai bisogno di un singolo tronco. In realtà, trunk è un nome arbitrario per un ramo "master" comunque (ad esempio nei documenti Microsoft per TFS si consiglia di utilizzare una cosa chiamata "Main").

Ma c'è una buona ragione per sviluppare altrove e usare i rami di rilascio solo per il codice 'finito'. Aumenta le opportunità di qualità, poiché puoi sviluppare in modo indipendente e unire il tuo codice finale, testato, a diverse filiali di rilascio. Ad esempio, decidi di aggiornare un componente a una versione successiva (hai trovato un bug di sicurezza, ad esempio). È possibile apportare la modifica sul trunk e unire quella modifica a tutti i rami di rilascio invece di ripetere ripetutamente la stessa modifica. Generalmente questo approccio funziona, anche se diventerà scomodo man mano che il tronco si allontana dai vecchi rilasci.

Se utilizzi un singolo tronco, puoi anche utilizzare i rami delle funzioni che sono fantastici. Apportare modifiche a un ramo, farle revisionare e quando le consideri fatte, unire al tronco. Un sacco di sviluppo può essere eseguito indipendentemente senza interferire con altri sviluppatori.

Quindi tendo a lavorare in un singolo trunk, alimentato da branch di funzionalità e taggato periodicamente come release, con patch occasionali applicate alla release, se necessario.

    
risposta data 08.08.2014 - 11:48
fonte