Strategia di ramificazione per evitare più rami di rilascio per clienti diversi

4

Attualmente sto pensando alla seguente strategia di ramificazione

  1. Filiale principale
  2. Sviluppo ramo
  3. Ramo di funzionalità
  4. Rilascia ramo

Fondamentalmente l'idea è di avere un ramo di rilascio in modo che l'hot fix possa essere applicata rapidamente per una versione specifica.

Questo è il problema e se ho una funzionalità urgente che devo fare per un cliente specifico e non voglio che queste funzionalità vengano applicate ad altri clienti utilizzando la stessa versione di rilascio finché non viene completamente testata. Allo stesso tempo, non desidero creare più rami di rilascio per clienti diversi in quanto ciò complicherà le cose.

Qual è il modo migliore per gestire tale situazione?

    
posta CliffC 31.05.2013 - 12:33
fonte

2 risposte

2

Se si tratta di una funzionalità che verrà consegnata a tutti i clienti una volta che è stata completamente testata, e questo cliente prende parte allo sforzo di test, allora è meglio usare una seconda versione filiale per il test di questa funzionalità. Dopo che la funzione è stata trovata abbastanza stabile, il secondo ramo di rilascio può essere unito al ramo di rilascio ufficiale.

Se la funzione non sarà usata da tutti i clienti, allora è meglio usare un interruttore di funzione, come delineato in risposta di @aquaranga .

    
risposta data 31.05.2013 - 13:54
fonte
3

Invece di avere un repository SCM separato per ogni cliente, potresti avere qualcosa come una funzionalità che si attiva nella stessa base di codice.

Un commutatore di funzionalità è qualcosa che puoi configurare nel database, in base a un particolare attributo che distingue in modo univoco il cliente.

Ad esempio; assumere una caratteristica F e i clienti C1 e C2. C1 vuole la funzione e C2 no. La tua tabella list_list avrebbe voci come:

Feature     Customer     Available?
  F            C1           Y
  F            C2           N

Insieme a una strategia di memorizzazione nella cache (poiché i dati sopra indicati sarebbero consultati su base frequente), il tuo codice potrebbe decidere se una funzionalità deve essere resa disponibile per un determinato cliente.

    
risposta data 31.05.2013 - 12:38
fonte

Leggi altre domande sui tag