2012-10-24 2 views
6

Ho appena assunto una posizione di sviluppo web per un'azienda che gestisce molti siti diversi. Ci sono un paio di "design" di siti diversi e per ogni progetto, ci sono un paio di versioni di tipo "cookie-cutter" della stessa cosa. Sono siti diversi, ma il framework è così vicino allo stesso, che dal momento che solo il contenuto e alcuni cambiamenti di stile, il ragazzo precedente li aveva appena copiati incollandoli agli host specifici.Più siti simili con GIT? O qualche altro controllo di versione?

Quindi la mia domanda è se Git è o meno la cosa giusta per questo? Ho usato un po 'git nei miei progetti collaterali, ma stiamo parlando di centinaia di siti (circa 10 per design) per questo lavoro. Un mucchio di rami sarebbe una buona strada da percorrere? Principalmente, quello che voglio essere in grado di fare è aggiornare rapidamente e facilmente i file comuni. Il precedente stava usando solo uno script perl per trasferire le cose a "aggiornare" i siti quando abbiamo apportato una modifica globale. Sembra che sarebbe molto più infallibile e controllato (versione controllata) con git.

Subversion era un'altra mia opinione, ma non ho l'accesso per installarlo su tutti i server. La maggior parte dei file viene trasferita via ftp, ma con un po 'di finagling, potrei probabilmente ottenere un po' di ssh (probabilmente lo installerei con il fusibile per sshfs).

Qualche idea? O, se sto andando in questo modo completamente sbagliato, fammi sapere, anche. Non ho mai trattato nulla di queste dimensioni (ad esempio un sacco di siti) prima, e sembra davvero disordinato. So che c'è un modo migliore per farlo!

Grazie!

risposta

4
  1. sviluppo e distribuire in compiti diversi separata (non c'è bisogno di avere un repository/o solo WC/su ogni produzione)
  2. Qualsiasi SCM con buona ramificazione-fusione lavoreranno
  3. parte comune di tutti i siti (quadro) può essere separato (o almeno si può provare a farlo) in un'unica entità, legata ai prodotti finali (usando metodi specifici SCM - sottomoduli, esterni)
6

git submodules rimangono un buon modo per tenere traccia di altri pronti contro termine s, tra cui:

  • uno per file comune
  • una per file specifico.

Ciò significa che ciascun sito Web è un repository "padre" che include i due sottomoduli sopra menzionati.

Il trucco è, in particolare per il sottomodulo che rappresenta il file comune, è quello di dichiararlo in un sito Web come "following the latest commits of a branch".

git submodule add -b master common url/to/common/files/repo 

In questo modo, ogni volta che si deve lavorare su uno di quei siti pronti contro termine, tutto quello che dovete fare prima è una:

git submodule update --remote 

e si è sicuri di lavorare con le ultime up- fino ad oggi file comuni.