Domanda

Il nostro team (5-10 sviluppatori) prevede di adottare Subversion per i nostri progetti / soluzioni .NET (Visual Studio) (VisualSVN Server, TortoiseSVN / VisualSVN).

Qual è il modo migliore per organizzare un nuovo albero di repository ? Va bene usare un grande repository o è meglio creare repository diversi per ogni soluzione / linea di prodotti ecc.?

I nostri progetti possono essere classificati in questo modo (esempio):

  • Linea di prodotti principale
    • App Web principale
      • Biblioteca 1
      • Biblioteca 2
      • ...
    • Client Windows
    • Un altro client Windows
    • Servizio Windows
  • Strumenti
    • Strumento A
    • Strumento B
  • Linea di prodotti 2
    • Software 1
    • Software 2
  • Linea di prodotti 3
    • App 1
    • App 2
È stato utile?

Soluzione

In genere, si desidera utilizzare un repository separato in ogni caso in cui si prevedono autorizzazioni di accesso diverse (ad esempio alcuni sviluppatori dovrebbero avere accesso commit a un progetto, ma non a un altro, oppure un progetto ha un'interfaccia anonima pubblica di sola lettura ma un altro no).

Volete tutto in un repository se non avete bisogno di quel livello di controllo degli accessi, specialmente se dovete essere in grado di copiare o spostare file tra progetti (cioè i progetti potrebbero condividere il codice).

Metti la suddivisione trunk / tag / branch a qualsiasi livello corrisponda a una porzione di codice che potresti rilasciare come un singolo pacchetto (ovvero pensa a dove verifichi il tag). Questo non è fondamentale per iniziare, dato che questi non sono diversi internamente da qualsiasi altra cartella, quindi puoi semplicemente spostare le cose in un secondo momento, anche se ovviamente è più carino non avere quel problema.

Altri suggerimenti

  • Punto di vista della gestione SVN Preferisco 1 repository.
  • Punto di vista del programmatore Preferisco 1 repository.
  • Server Administrator Preferisco 1 repostitory.
  • Dal punto di vista della sicurezza lo è preferibile non mettere tutto il tuo uova in un cestino.

La struttura del tuo repository sarà in qualche modo unica per la tua attività e per i suoi prodotti. Conserviamo il nostro in un repository. La nostra struttura è in qualche modo simile.

  • /
    • Progetti
      • Nome progetto
        • tronco
        • rami
    • Documentazione
      • Progetto 1
    • Librerie condivise
      • Classe super stringa
    • Piccole utility
      • potenziamento vim X

Usiamo un grande repository e abbiamo tutto strutturato in sottocartelle (/ project1, / project2 ecc.) e sembra funzionare bene.

Il progetto Apache ha un enorme repository svn e sembra che vada bene per loro! :)

In termini di organizzazione, la struttura che hai dato sembra abbastanza ragionevole. Penso che tutto vada, praticamente, purché sia ??razionale (cioè mescolare ogni singolo strumento con ogni singolo progetto è probabilmente una cattiva idea, ecc.). Quindi scegli qualcosa che funzioni per te (strumenti /, progetti / ecc.). Subversion offre anche un ottimo supporto per spostare le cose nel repository, quindi puoi sempre cambiare se necessario.

Abbiamo un singolo repository strutturato in questo modo. Tutto ciò su cui è stato lavorato da più di alcune persone e / o in sviluppo attivo è impostato con trunk / tag / branch / nella cartella principale.

Probabilmente metteremmo quei set di cartelle trunk-tags-branch in ogni sottocartella che hai elencato, tranne forse una libreria o due che non sono in sviluppo attivo.

Abbiamo repository separati per ogni progetto; ma il motivo principale è per motivi di accesso, inoltre se il cliente desidera una copia della propria fonte, possiamo darglielo con la storia senza troppe storie. Se guardi i file di configurazione in conf non è così difficile avere un file di configurazione universale che funzioni per tutti i tuoi progetti. Lo facciamo in questo modo:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz

AuthZ:

[groups]
AOS = nathan,mark

[AOS:/]
@AOS = rw
frew = rw

e poi ovviamente passwd:

[users]
frew = password
nathan = awesome
mark = station

Cerca di tenere separato il materiale a cui accedi regolarmente (codice, script) dall'elemento "scrivi una volta e esegui il backup" . Dover fare il checkout / aggiornare migliaia di jpeg solo per cambiare alcune righe di codice diventa noioso molto rapidamente.

Sto usando un repository e molti progetti come di seguito:

Projects
   Project Name
      trunk
      branches
      tags

La mia unica preoccupazione è il backup e il ripristino. Il backup SVN viene eseguito a livello di repository, quindi il ripristino ripristinerà tutti i progetti anziché solo uno.

Jirong

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