Quando è necessario un multi-modulo di progetto per dividere in deposito separato di alberi?

StackOverflow https://stackoverflow.com/questions/14397

  •  08-06-2019
  •  | 
  •  

Domanda

Attualmente abbiamo un progetto con uno standard di repository subversion layout di:

./tronco
./rami
./tag

Tuttavia, come ci stiamo muovendo lungo la strada di OSGi e un progetto modulare, abbiamo finito con:

./tronco/bundle/main
./tronco/bundle/modulea
./tronco/bundle/moduleb ./tag/bundle/main-1.0.0
./tag/bundle/main-1.0.1
./tag/bundle/modulea-1.0.0

Il 'costruire' è ancora abbastanza monolitico che si costruisce tutti i moduli in sequenza, anche se sto iniziando a chiedermi se dobbiamo refactoring del costruire/repository a qualcosa di più come:

./bundle/main/tronco
./bundle/main/tag/main-1.0.0
./bundle/main/tag/main-1.0.1
./bundle/modulea/tronco
./bundle/modulea/tag/modulea-1.0.0

In questo modello mi immagino ogni modulo edificio stesso, e salvare i suoi binari in un repository (maven, edera, o un altro percorso del repository subversion stesso).

Ci sono linee guida o di 'best practice' del progetto layout una volta che uno va modulare?

È stato utile?

Soluzione

La Sovversione libro contiene due sezioni:

Un blog sull'argomento: "Repository Subversion Layout"

La risposta breve, anche se:mentre il vostro chilometraggio può variare (in ogni situazione è individuale), il /bundle/<project>/(trunk|tags|branches) schema è piuttosto comune, è probabile che funziona bene per voi.

Altri suggerimenti

Questo è molto a preferenze personali, ma trovo la seguente struttura adatta per progetti di grandi dimensioni composto di diversi moduli:

branches
  project-name
    module1
      branch-name
    module2   
      possibly-another-branch-name
    branch-name-on-a-higher-level-including-both-modules
      module1
      module2
tags
  ... (same as branches)
trunk
  project-name
    module1
    module2

Ho utilizzato spesso anche la struttura in grandi archivi contenenti molti progetti, perché talmente semplice mantenere aggiornati tutti i progetti nello stesso repository rende di cross-reference, i progetti e la condivisione di codice tra di loro—storia—più facile.

Mi piace utilizzare la struttura con la radice, il tronco, le etichette e i rami cartelle dall'inizio, perché la mia esperienza (con grandi repository contenente molti progetti), sotto-progetti e moduli mai separare i tags o rami, quindi non c'è bisogno di creare la struttura di cartelle per loro.Rende anche più facile per gli sviluppatori di controllare l'intero tronco di repository e di non avere tutte le etichette e i rami (che non hanno bisogno la maggior parte del tempo).

Credo che questa è una questione di progetto o di una società politica, però.Se si dispone di un repository per ogni progetto o di una data sviluppatore è in grado di lavorare su un unico progetto nel repository alla volta le radici del tronco non può rendere più senso.

Solo i miei due centesimi...

Voglio solo sottolineare il commento in SVN documentazione (già citato in un'altra risposta, stesso thread) http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout

Il brano fa riferimento la seguente struttura :/ tronco/ calc/ calendario/ foglio di calcolo/ ... tags/ calc/ calendario/ foglio di calcolo/ ... filiali/ calc/ calendario/ foglio di calcolo/

"Non c'è niente di particolarmente scorretto su come layout, ma può o non può sembrare intuitivo per gli utenti.Soprattutto di grandi dimensioni, multi-project situazioni con molti utenti, questi tendono a essere familiare con solo uno o due dei progetti nel repository.Ma i progetti-come-filiale di fratelli tende a de-enfatizzare progetto individualità e focus su tutta una serie di progetti come una singola entità.Questo è un problema sociale se.Ci piace il nostro originariamente suggerito accordo per ragioni puramente pratiche—e ' più facile chiedere, o di modificare, o migrare altrove) tutta la storia di un singolo progetto, quando non c'è un unico percorso del repository che contiene tutta la storia—il passato, il presente, taggate e ramificata per il progetto e questo progetto da solo."

Per parte mia, tendo ad essere d'accordo fortemente con questo e preferiscono il seguente schema:/ utils/ calc/ tronco/ tags/ filiali/ calendario/ tronco/ tags/ filiali/ ... ufficio/ foglio di calcolo/ tronco/ tags/ filiali/

Il motivo sono semplicemente che la sua impraticabile per il tag di un progetto completo di set quando si vorrebbe solo tag di un sottoinsieme specifico.

Facciamo un esempio:Se il progetto-1 dipende moduleA v1.1 e moduleB v2.3, non voglio più recente moduleA v2.x apparire nei tag.Infatti, quando di ritorno da alcuni giorni/settimane/mesi dopo questo tag release, vorrei essere costretto ad aprire il bundle descrittore nel tagged versione del progetto a-1 per leggere la versione di moduleA effettivamente necessaria.

Inoltre, se devo fare un backup specifico di questa versione fonti su un CD, ho solo voglia di esportare questo tag senza scaricare centinaia di megabyte di estranei roba.

E ' stato appena i miei due centesimi.

Ho risposto ad una domanda simile in un StackOverflow Versione Struttura di Controllo della domanda.In realtà si adatta ancora meglio qui da noi pioggia OSGi di sviluppo e hanno un sacco di bundle.Devo eco Anders Sandvig commenti:mantenere il tronco/tag/filiali sul livello principale, dal momento che sarà solo ramo di un set limitato di moduli.Inoltre, non interferisce con i moduli edificio singolarmente.

Non mi copia la risposta che ti ho fatto prima, ma non è del tutto pertinente a questa domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top