Controllo del codice sorgente con più repository specifici del cliente

-3

Ecco un diagramma di come è configurata la nostra impostazione di controllo del codice sorgente.

Il problema con questa configurazione è il modo in cui gestiamo i vari clienti. Mi piacerebbe davvero utilizzare un approccio diverso rispetto a copiare l'intera linea di base per ciascuno dei nostri clienti. Penso che in futuro questo diventerà un grosso problema da mantenere.

Come si può ottenere questo risultato al meglio? Qualsiasi suggerimento di aiuto sarebbe molto apprezzato.

    
posta JonB 17.04.2018 - 00:56
fonte

2 risposte

3

Alcune opzioni:

  • Metti solo le personalizzazioni in repository separati e semplicemente copiali sul repository originale quando costruisci il deployable. Questo è possibile solo per differenze superficiali come la tematizzazione; una volta che ci sono patch di codice, molto rapidamente diventa ingestibile.
  • Sviluppa separatamente e unisci le modifiche che dovrebbero essere in entrambi i repository. Questa potrebbe sembrare una buona alternativa finché non si apportano modifiche che è necessario separare manualmente, riga per riga, per garantire che ciascuno faccia ciò che vuole. Questo lavoro peggiora sempre di peggio in ogni fusione, fino a quando inevitabilmente le fusioni sono troppo costose per continuare. Ora tutto è uno sforzo doppio.
  • Rendi le personalizzazioni configurabili e metti solo la configurazione in repository separati. Questo rende molto più facile gestire le differenze di codice, dal momento che sono solo opzioni di attivazione / disattivazione. Il sovraccarico degli switch è molto più gestibile rispetto alle altre opzioni a meno che non vadano completamente fuori controllo (e anche in questo caso è generalmente più semplice sfoltire le levette piuttosto che fondere manualmente per sempre).
risposta data 17.04.2018 - 05:26
fonte
0

I would really like to use a different approach than copying the entire baseline for each of our customers

Copia? Cosa intendi?

Se la linea di base, cliente1 e cliente2 sono repository diversi della stessa base di codice, è sufficiente aggiungere più telecomandi. Ad esempio, se hai bisogno di lavorare sul codice cliente1, clona customer1 e aggiungi baseline come un altro telecomando. Quindi puoi semplicemente unire le modifiche da baseline/master al tuo ramo di prodotto locale e quindi inviarlo su customer1/product1 branch. Puoi unirli nuovamente in baseline/master se desideri apportare alcune modifiche comuni a tutti i tuoi clienti.

In questo modo hai solo un repository locale, condividendo tutti i riferimenti comuni tra i tuoi repository simili.

Non utilizzare customer1/master , in quanto potresti avere diversi prodotti per lo stesso cliente, quindi questo non verrà ridimensionato, a meno che non desideri memorizzare personalizzazioni comuni a tutti i prodotti di quel cliente.

    
risposta data 20.04.2018 - 15:37
fonte

Leggi altre domande sui tag