2011-09-06 19 views
7

La mia squadra sta prendendo in considerazione uno spostamento da circa 2 dozzine di repository di subversion in repository git. Quello che stiamo cercando di rimediare è che al momento tutti hanno il loro repository di sovversione per ognuno dei loro componenti di prodotto. Quello che mi piacerebbe fare è cercare di ridurre lo sprawl che abbiamo e aiutare a costruire un chiaro percorso in avanti.Strutturazione dei componenti correlati in git

Sto cercando consigli su come strutturare i repository. Un punto critico è come raggruppare progetti correlati. Abbiamo due prodotti. Ogni prodotto ha una serie di codice di servizi Web (php), codice client android (java), codice client iphone (obj c), codice ipad (obj c) e codice client del sito Web (php + js). Attualmente ogni proprietario ha il suo componente in un repository svn separato.

Il mio pensiero è stato quello di provare a combinare questi componenti in un unico repository, ma non posso dire se è una buona pratica con git. Ciò fornisce vantaggi reali rispetto all'utilizzo di repository separati? Sembrerebbe promuovere un contratto sociale migliore per la qualità di ciò che viene controllato a causa della visibilità comune, ma lo pagheremo in altri modi?

risposta

5

I criteri per la combinazione di diversi set di file in una "componente" (qui uno Git pronti contro termine) è il loro rispettivo ciclo di sviluppo (il modo in cui si evolvono in termini di etichettatura e la ramificazione):

  • può fai evoluzioni su moduli php o java senza dover apportare modifiche ad altri moduli (come quelli obj c)?
  • puoi isolare in un ramo alcune evoluzioni/correzioni che sono fatte solo per uno di quei moduli e non gli altri?
  • puoi riutilizzare una versione specifica di uno di questi moduli in diversi progetti?

Se sì, un approccio basato su componenti è migliore (cioè uno repo git per modulo), anziché utilizzare una repo con tutto ciò (system approach).
Vedere ad esempio "Component based web project directory layout with git and symlinks".

Un componente rappresenta un "insieme coerente di file" ed è gestito al meglio nel proprio repository Git.

+0

Non è che le altre risposte fossero sbagliate, ma apprezzo la prospettiva su come e quando raggruppare come set di codici. Grazie. –

3

di avere almeno due opzioni:

Se i progetti sono per lo più privati, vi consiglio di attaccare al primo. Leggi i documenti, è tutto facile.

1

Non so molto circa i flussi di lavoro di Git ma so di avere almeno tre scelte:

  1. Per ogni progetto il proprio repo, probabilmente l'opzione più sicura. Tag e buoni strumenti di test sono i tuoi amici.
  2. Filiali separate per gruppo di progetto e per ogni progetto il proprio ramo. Assicurati di eseguire il backup di tutto prima di fare questo. Vedi Scott Chacon's video sulle filiali vuote. Non l'ho fatto prima, ma i rami gh-pages di Github sono un esempio vivo.
  3. Sottomoduli. Ogni progetto ottiene il proprio repository git, all'interno di un repository git stesso. Probabilmente la migliore idea in circolazione.
Problemi correlati