2009-05-18 13 views
16

Abbiamo un singolo repository SVN con più progetti correlati. In questo modo ...Come posso prelevare solo i tronchi di più progetti dallo stesso repository?

\repo 
    \Project1 
    \branches 
    \tags 
    \trunk 
    \Project2 
    \branches 
    \tags 
    \trunk 
    \Project3 
    \branches 
    \tags 
    \trunk 

vorrei controllare il tronco di ogni progetto nel mio spazio di lavoro senza i rami/tag cartelle.

\workspace 
    \Project1 
    \trunk 
    \Project2 
    \trunk 
    \Project3 
    \trunk 

C'è un modo per eseguire questa operazione senza verificare singolarmente ogni trunk?

risposta

8

Risposta breve: no.

Risposta lunga: Vedere http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html e fare il checkout con uno script in loop.

+0

Non è la risposta che volevo sentire ...:-(ma grazie per la risposta rapida e accurata in qualsiasi modo. Sembra che scriverò una sceneggiatura oggi –

+3

Ho trovato un file batch per automatizzare il processo. http://www.lostechies.com/blogs/hex/ archivio/2008/03/11/batch-file-a-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx –

+0

Il file batch è ottimo per quelli di noi bloccati su Windows. – pards

1

EDIT: controllare il SVN Book per le sezioni di seguito

Partenza 2 directory differenti in due copie di lavoro separate:

$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz 
A test/a 
A test/b 
Checked out revision 2. 
A quiz/l 
A quiz/m 
Checked out revision 2. 
$ ls 
quiz test 

Partenza 2 directory differenti in due copie di lavoro separate, ma il posto sia in una directory chiamata "copie funzionanti":

$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz working-copies 
A working-copies/test/a 
A working-copies/test/b 
Checked out revision 2. 
A working-copies/quiz/l 
A working-copies/quiz/m 
Checked out revision 2. 
$ ls 
working-copies 
0

Sospetto che dovrai ancora parlarne (checkout) a ogni persona al trunk - ma puoi almeno controllare anche l'area di lavoro (per ottenere tutti i progetti, e così puoi aggiornare, ecc. globalmente) usando sparse directories.

7

È possibile utilizzare l'opzione -N, che ignora le sottodirectory. È possibile eseguire questo la prima volta di controllare le fonti:

svn co -N http://path/to/repo 
cd repo 
for f in Project1 Project2 Project3; do 
    svn up -N $f 
    svn up $f/trunk 
done 

E per aggiornare i tronchi in un secondo momento:

svn up repo/*/trunk 

Questo funziona con tutti i client SVN. Se utilizzi un client SVN 1.5.x, puoi anche dare un'occhiata alle "directory sparse", documentate allo Sparse Directories (Non sono ancora autorizzato a postare collegamenti: -C), che ti permetteranno di eseguire "svn update" nella directory del repository.

5

Questo ha fatto bene il trucco in bash. Si noti che ho rinominato le cartelle di output per rendere Eclipse più felice durante l'importazione dei progetti.

for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done 
1

ho avuto anche la necessità di cassa solo i tronchi di un repository SVN così ho scritto questo lotto di Windows: Checkout just the trunks of a SVN repository

Si estrae i tronchi a una struttura di directory piatta (se un tronco esiste già a livello locale è aggiornato). Si prega di leggere i commenti sul lotto per maggiori dettagli.

+0

Il tuo link è scaduto (ecco perché dovresti includere tali informazioni inline :)). –

0

trovato questo per essere lavorato, piuttosto che quanto sopra:

checkoutList.bat: 

for %%G in (projectA, projectB, projectC) do (
    echo %%G 
    mkdir %%G 
    svn co http://your.repo/path/%%G/trunk %%G 
) 
-1

clic destro sulla cartella - SVN check out. Inserisci l'URL e fai clic sul pulsante "Scegli elemento". Con le caselle di controllo selezionare le sottocartelle che si desidera includere.

+0

Le istruzioni sono per quale sistema operativo e quale strumento? Tartaruga? –

Problemi correlati