2012-09-04 15 views
5

Nella mia azienda abbiamo un software di base che viene personalizzato per ogni cliente. Oggi usando SVN abbiamo una configurazione come questa:La migliore pratica per più progetti personalizzati e Git

/trunk 
/tags 
    … 
/branches 
    /client_project_x 
    /client_project_y 
    /client_project_z 

Come sarebbe il modo migliore non organizzare questo in git? Hai un repository remoto per ogni progetto e uno per il codice base o un grande repository remoto con diverse filiali?

Se utilizziamo un repository remoto di grandi dimensioni con più filiali, esiste un modo per clonare solo un ramo da un repository remoto?

risposta

2

Concettualmente, non vi è alcuna differenza tra più filiali in un repository e filiali in più repository. L'intero punto di DVCS è quello di rimuovere questa distinzione. Vuoi pensarci in termini di persone che hanno bisogno di accedere e controllare un determinato ramo. Se è comune a tutti gli sviluppatori accedere al codice da ogni client, sarà più facile inserirli tutti in un unico repository centrale. Puoi scegliere quali rami vuoi clonare o meno, sebbene la clonazione di un intero repo sia la più facile. Se è necessario disporre di autorizzazioni di accesso molto diverse in rami diversi, è preferibile creare repository separati per loro.

In altre parole, impostarlo in qualsiasi modo rende più semplice lo sviluppo e i team di test.

+0

Come scegliere i rami che voglio clonare? –

+0

Guardare [qui] (http: // StackOverflow.com/domande/4811434/git-clone-solo-un-ramo). –

1

I progetti separati devono essere in repository separati.

(E 'così semplice con git Non c'è nessun vantaggio e un sacco di potenziali svantaggi di mantenere un sacco di estranei -. O vagamente legato - progetti in un unico repository sia in un grande albero o in rami separati.)

+0

Qualche consiglio su come gestire più repository self hosted in un modo facile da creare un nuovo repository remoto? –

+0

@MarcoPompei: 'git init --bare' in una posizione opportunamente accessibile è il modo più semplice per creare un repository condiviso" centrale ". –

0

git è nato per rendere i rami/unire rami in modo facile, quindi basta creare i rami che vuoi per nuove funzionalità, testare le funzionalità, lavorare con il sotto-team senza influenzare il resto dell'azienda! Linux ad esempio ha migliaia di filiali, e stanno crescendo!

Guarda this video per Linus Torvalds, che ti aiuterà molto a comprendere i valori "in mente" che ha durante lo sviluppo di git.

0

utilizzo vari pronti contro termine:

Il nucleo è in un unico repository, ogni plugin e ogni cliente ha un proprio repository:

  • modwork (core)
  • modwork_foo (configurazione per il cliente "foo ")
  • modwork_app1 (un app che può essere installato per diversi clienti)

No il singolo file in core viene modificato durante il processo di installazione o di generazione. Ogni cliente ha lo stesso core. Il core contiene hook per i metodi personalizzati.

Non mi piace modificare i file nel core nelle filiali per i client. Penso che questo diventi difficile se hai più di 5 clienti.

Problemi correlati