2012-11-12 12 views
7

Ho una situazione in cui la strategia git è adatta per l'uso?Strategia Git da utilizzare nella distribuzione di istanze di etichette bianche in sottodomini diversi.

Situazione:

Abbiamo un programma che ha un repository git. In cui seguiamo la strategia di ramificazione,

  1. Branch: sviluppare: utilizzato da tutti gli sviluppatori per implementare le caratteristiche

  2. Branch: test: dove il codice sviluppato fino corrente viene distribuito a prova l'applicazione.

  3. Branch: produzione: Dopo l'approvazione da team di testing che si fondono testare ramo di produzione & distribuirlo per l'ambiente di produzione.

Problema:

  1. Ora abbiamo 3 differenti installazioni di produzione (site1.mainDomain.com, site2.mainDomain.com, site3.mainDomain.com), questi 3 le installazioni hanno diverse intestazioni (logo, colore dell'intestazione) per ora.

  2. Ci può essere la possibilità che site1.mainDomain.com abbia alcune funzioni che possono essere sviluppate in futuro & può essere utilizzato solo per site1.mainDomain.com.

  3. Alcune funzionalità future possono essere comuni per site1.mainDomain.com, site2.mainDomain.com ma non per site3.mainDomain.com.

  4. Ora se c'è qualche problema sulla produzione di site1.mainDomain.com & che è il problema principale dal ramo base, come gestiremo questa cosa.

Quindi, per ottenere ciò, quale strategia git è utile? Stavo leggendo dei sotto-moduli, git sub-tree, git patches ... ma un po 'confuso per prendere una decisione. Si prega di suggerire la migliore soluzione possibile e la strategia da seguire.

Grazie in anticipo. Vijay

risposta

4

Consiglio vivamente di NON usare git per risolvere il problema.Posso raccontare dall'esperienza, visto che il progetto a cui sto lavorando è caduto nella trappola di dover mantenere due rami git senza una buona ragione. Anche Github Firewall Install (Github: FI, predecessore di Github Enterprise) ha avuto lo stesso problema.

suggerisco di dare un'occhiata a Feature Flag (Toggle Feature) modello per risolvere il problema - http://martinfowler.com/bliki/FeatureToggle.html

8

Penso che stai cercando il posto sbagliato (sistema di controllo della versione) per risolvere questo problema. In questo tipo di situazione di solito creo file di impostazioni diversi per contesti diversi, mantengo tutti quelli nello stesso ramo git e ho solo un piccolo file di configurazione locale per ogni distribuzione (principalmente scegliendo il contesto giusto). Quindi il tuo codice può verificare, in base al contesto, che tipo di contenuti mostrare.

Consiglio vivamente di non creare rami di caratteristiche diverse per ogni sito, perché ciò ti porterà in un disordine disordinato e la risoluzione costante dei conflitti di conflitto si risolverà molto velocemente.