Domanda

Attualmente sto usando TortoiseSVN per gestire un paio di progetti che ho in movimento al momento. Quando ho spostato tutto per la prima volta nel controllo del codice sorgente, non ero davvero sicuro di come tutto fosse disposto, così ho finito per mettere ogni progetto nel suo repository.

Mi chiedevo se sarebbe stata una buona idea trasferirli tutti in un unico grande archivio e farli dividere in cartelle di progetto? Che cosa fanno tutti gli altri?

Al momento nessuno di loro condivide codice comune ma potrebbe in futuro. Renderebbe più semplice la gestione se si trovassero tutti insieme.

Grazie.

È stato utile?

Soluzione

Dipende in parte da cosa intendi per "progetto".

Ho un repository locale generale contenente pezzi casuali di cose che scrivo (incluso il mio sito Web, poiché è piccolo). Un repository SVN locale per utente singolo non subirà notevoli problemi di prestazioni fino a quando non avrai trascorso molti anni a scrivere. A quel punto SVN sarà comunque più veloce. Quindi devo ancora pentirmi di aver gettato tutto in un repository, anche se alcune delle cose lì dentro sono completamente indipendenti da quelle che ho scritto tutto.

Se un " progetto " significa "un incarico dalla classe" o "gli script che uso per guidare il mio TiVo" o "i miei progressi nell'apprendimento di una nuova lingua", quindi la creazione di un repository per progetto mi sembra un po 'superflua. Inoltre, non costa nulla. Quindi suppongo che direi di non cambiare quello che stai facendo. A meno che tu non voglia davvero l'esperienza di riorganizzare i repository, nel qual caso fai cambia quello che stai facendo :-)

Tuttavia, se per " progetto " intendi un progetto software 'reale', con accesso pubblico al repository, quindi penso che repository separati per progetto sia ciò che ha senso: in parte perché divide le cose in modo pulito e ogni progetto si ridimensiona in modo indipendente, ma anche perché è ciò che le persone si aspetteranno di vedere .

La condivisione del codice tra repository separati è meno problematica di quanto si possa pensare, dal momento che svn ha il delizioso "quot svn: externals" caratteristica. Ciò ti consente di indirizzare una directory del tuo repository su una directory in un altro repository e di controllare quella roba automaticamente insieme alla tua roba. Vedi, come sempre, il libro SVN per i dettagli.

Altri suggerimenti

Li memorizzerei nello stesso repository. È un po 'più ordinato. Inoltre, perché sarebbe importante per l'integrazione continua e così - puoi sempre estrarre una cartella specifica dal repository.

È anche più facile da amministrare: account su un repository, log di accesso a un repository ecc.

La mia regola pratica è quella di consolidare le cose che vengono consegnate insieme. In altre parole, se è possibile consegnare il progetto X e il progetto Y separatamente, quindi inserirli in repository separati.

Sì, a volte questo significa che hai un enorme repository per un progetto che contiene un numero enorme di componenti, ma le persone possono operare su alberi secondari di un repository e questo li costringe a pensare all'intero "progetto". quando commettono modifiche al repository.

Terrei assolutamente ogni progetto nel suo repository, separato da tutti gli altri. Questo darà ad ogni progetto la sua storia di impegni. I rollback su un progetto non influiranno su altri progetti.

Personalmente preferisco ogni progetto nel suo repository

Se lavori con molte altre persone potresti considerare se tutti hanno bisogno dello stesso livello di accesso a ogni progetto. Penso che sia più facile concedere diritti di accesso a persona se si inserisce ciascun progetto in un repository separato. ~~~

Se si utilizza un repository separato per ciascun progetto, è possibile utilizzare Tag esterno per fare riferimento ad altri repository -questo codice di condivisione.

Finché ogni progetto ha / trunk / tag e / branch sei bravo. Il corretto criterio di integrazione continua è qui.

Sì, metti tutto nel controllo del codice sorgente.

Se stai usando SVN, mantieni i progetti nel loro repository - svn è lento e diventa più lento.

Se i tuoi progetti sono indipendenti, va bene conservarli in repository separati. Se condividono componenti, metterli insieme.

Per Subversion, suggerirei di mettere tutto nello stesso repository; il sovraccarico amministrativo della creazione di un nuovo repository è troppo elevato per renderlo un gioco da ragazzi, quindi è più probabile che non si verifichi una versione e se ne pentirà in seguito. Subversion offre numerosi controlli di accesso dettagliati se è necessario limitare l'accesso a una parte del proprio repository.

Mentre comincio a migrare i miei progetti su Mercurial, tuttavia, sono passato alla creazione di un repository per progetto, perché ci vuole solo un "hg init". per crearne uno nuovo e posso utilizzare la hg forest estensione per eseguire facilmente operazioni su repository nidificati. Subversion ha svn: esterni, che sono in qualche modo simili, ma richiedono un maggior carico amministrativo.

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