Usa git per gestire diverse distribuzioni dello stesso repository

2

Ho un'applicazione web costruita in PHP. Voglio utilizzare Git per gestire i diversi aspetti della distribuzione.

Alcuni file nell'app Web sono specifici per un client (loghi, stringa di connessione al database, file caricati dall'utente (ckfinder), ecc. Il resto è lo stesso per tutti.

L'applicazione è pesante quindi ho paura di renderlo un Saas. Invece ogni cliente ha il proprio vps. Avevo (in passato) un ramo per dev di un ramo per la produzione e così via.

Quindi stavo pensando di avere una filiale per ogni cliente. E 'questa una buona idea? Inoltre volevo avere nella mia macchina locale una cartella diversa contenente i file per ogni client (compresi i file comuni).

PS: ho esaminato molte altre domande e tutte le altre domande sono molto simili ma le risposte non sono quello che sto cercando.

    
posta Aslabs 14.10.2014 - 12:52
fonte

1 risposta

7

Avere un ramo per cliente non è una soluzione ideale, per un paio di motivi:

  1. Non scala bene. Dovrai creare un nuovo ramo per ogni cliente e quindi gestire la fusione delle modifiche al codice tra tutti quei rami. E, quando in realtà fai hai bisogno di un ramo per un motivo legittimo (ramo delle caratteristiche, correzione della produzione, ecc.), Dovrai diramare tutte le filiali dei clienti! Troppo complicato.

  2. Logicamente, la creazione di filiali clienti nella maggior parte dei casi mescola i ruoli del sistema di controllo di origine e i meccanismi di implementazione o di gestione del prodotto.

Una soluzione migliore sarebbe quella di separare tutti i possibili file che sono diversi per cliente. Ad esempio, creare una directory di risorse, con sottodirectory per ogni cliente contenente i rispettivi loghi, file di stringhe di connessione, ecc. Quindi, esaminare gli strumenti di distribuzione come Puppet, Chef, Ansible, ecc. E creare script per copiare le risorse di ciascun cliente in la loro posizione sul server web quando sei pronto ad aggiornare il loro sito.

In questo modo, le risorse sono separate fisicamente e i processi sono separati logicamente (la fonte rimane in Git, la pratica di implementazione è codificata in uno o più script) in modo da avere artefatti che rappresentano la tua pipeline di produzione.

HTH

    
risposta data 14.10.2014 - 15:03
fonte

Leggi altre domande sui tag