2009-07-30 15 views
7

Sto cercando di capire il modo migliore per strutturare i nostri repository di Subversion inizialmente.Come strutturare i repository di Subversion

Quindi è consigliabile creare un repository iniziale e quindi i repository secondari per ogni progetto sottostante?

E quali archivi devono avere una linea, un ramo, ecc. Creati?

Inoltre, ho sentito che è consigliabile non creare una cartella trunk, branch e tag nel repository di livello root?

So che quando ero in un'altra squadra, abbiamo tirato, diciamo ProjectA ma non ha tirato giù un tronco, le cartelle di diramazione che è stato bello ma non so come questo è stato strutturato sul server per farlo accadere come questo .

+0

rimarcato con 'svn' piuttosto che 'tortoisesvn' dal momento che questo è un problema di repository/sever-side, non un problema sul lato client . –

risposta

8

Per risparmiarti i problemi di manutenzione futuri, a meno che tu non abbia ENORME quantità di codice, o preveda di voler eliminare completamente un progetto con una grande quantità di codice, tieni tutto in un unico repository. Quindi creare directory per ciascun progetto. Quindi, se desideri seguire la raccomandazione di Subversions, inserisci le cartelle "trunk", "branches" e "tags" nella cartella di ogni progetto.

+0

così quando creo una sottocartella per un progetto, quindi copio l'URL, vado in quella cartella localmente e poi come lo leggo alla cartella trunk che ho creato sul server sotto la cartella del mio progetto? – PositiveGuy

+0

Quando si imposta un nuovo repository questo è quello che faccio. Creo il repository globale, con un URL come "http://example.com/svn/". Lo controllo in una nuova cartella locale, I.E. "esempio-svn" (qualunque cosa tu voglia). Ora "esempio-svn" è una copia di lavoro dell'intero repository. Se si desidera impostare le cartelle trunk/branches/tags, creare una nuova cartella all'interno di "example-svn" per "project1" e all'interno di tale cartella creare "trunk", "branches" e "tags". Quindi, incolla tutti i file per project1 in "trunk", fai clic con il tasto destro su "project1" e seleziona "Aggiungi". Impegnati e sei a posto. – Nicole

+0

Nell'esempio sopra, se vuoi controllare l'intero repository (tutti i progetti), devi usare "http://example.com/svn/".Se volevi controllare solo project1, usa "http://example.com/svn/project1" – Nicole

14

se si desidera mantenere diversi progetti nel repository vorrei andare per tale struttura

/project1 
    /trunk 
    /branches 
    /tags 
/project2 
    /trunk 
    /branches 
    /tags 
... 

Se si desidera mantenere un solo progetto che questo farà:

/trunk 
/branches 
/tags 
+0

Grazie. Quindi se dovessi effettuare il check in project1 per la prima volta, otterrei l'URL dalla cartella Project1 \ trunk e lo userò, giusto? – PositiveGuy

+0

se vuoi lavorare su project1 userai qualcosa come 'svn: // path.to.your.repo/project1/trunk' per il checkout – RaYell

+0

esattamente, grazie! – PositiveGuy

4

Subversion book in soccorso .

+0

sì, ed è pieno di informazioni per confondervi ancora di più. L'ho passato e non dà le migliori pratiche come questa. – PositiveGuy

+3

Ho scoperto che mi ha chiarito molte cose. La risposta di RaYell è praticamente fuori dai consigli dei libri. –

1

La gestione di repository separati consente di personalizzare le pianificazioni di backup e le posizioni di archiviazione per repository. Inoltre, se occasionalmente devi scavare nel repository ed eseguire alcune azioni di manutenzione o pulizia (ad esempio, vuoi eliminare un commit dal repository interamente ... raro ma possibile) mantenere repository separati ti permetterà di farlo con interferenze minime ad altri utenti e altri repository.

Detto questo, per piccoli progetti, queste cose non sono in genere una grande preoccupazione. Fornisco un'altra raccomandazione calorosa all'impostazione trunk/branches/tags.

5

Preferisco repository strutturati, ben organizzati, autonomi e ben strutturati. C'è un diagram che illustra l'approccio generale (ideale) del processo di manutenzione del repository. Ad esempio, la mia struttura iniziale del repository (ogni repository del progetto dovrebbe avere) è:

/project 
    /trunk 
    /tags 
     /builds 
      /PA 
      /A 
      /B 
     /releases 
      /AR 
      /BR 
      /RC 
      /ST 
    /branches 
     /experimental 
     /maintenance 
      /versions 
      /platforms 
     /releases 
Problemi correlati