2009-03-19 16 views
72

Sto cercando un'esercitazione succinta e ben scritta sull'uso di svn: externals.Come iniziare con svn: esterni?

so già come usarli in modo non molto me stesso, ma voglio un buon articolo che posso creare un collegamento a domande quando rispondendo come questo che vengono in su di recente:

What to do with multiple projects depending on the same source?

I' lo faccio da solo, ma non li uso abbastanza spesso da voler sporgermi dal collo e scrivere un tutorial su di esso. Google è stato sorprendentemente inutile con questo argomento.

risposta

40

Qui ci sono alcune sezioni su di esso nel svnbook/manuale TortoiseSVN:

This è la pagina svnbook su svn: esterni. È la risorsa più utile sull'argomento.

This one spiega quattro modi per includere sotto-progetti nel flusso di lavoro (e nel processo manca un quinto: symlink).

E this last one è una pagina specifica di TortoiseSVN su come importare materiale in un repository (non direttamente correlato a svn: esterni).

16

Nel caso in cui non è chiaro dai link di cui sopra, il modo in cui si imposta la proprietà svn:externals che è legato ad una particolare revisione (pinning), qui è:

svn propset svn:externals "plugins -r12345 https://svn.example.com/common/plugins" extras 

Che vi farà una sottodirectory plugins nella directory extras e collegarla alla revisione 12345 dell'URL SVN esterno https://svn.example.com/common/plugins.

C'è un articolo Red Bean che suggerisce di utilizzare propedit poiché il svn:externals può essere un valore a più righe. L'esempio precedente verrà modificato come segue per utilizzare propedit.

svn propedit svn:externals extras 

Si dovrebbe quindi aggiungere una riga per ciascun collegamento esterno seguendo lo stesso formato mostrato sopra per il valore.

0
root/repo1/proj/base/common/log.c 
root/repo1/proj/base/common/log.h 
root/repo1/proj/base/client 

root/repo2/proj/test/base 

come esposizione qui sopra, vogliamo copiare 2 file e 1 directory per repo2

Step1

directory:/home/jack/repo2/proj/

cd /home/jack 

Step2

svn propset svn:externals "../repo1/proj/base/client proj/base/client" repo2 

qualcosa di simile: ln repo1/proj/base/client repo2/proj/base/client

Fase 3

export SVN_EDITOR=vim 

Fase 4

svn propedit svn:externals repo2 

spettacoli Vim:

../repo1/proj/base/client proj/base/client

Fase 5: aggiungere altri due file

../repo1/proj/base/client proj/base/client 
../repo1/proj/base/common/log.c proj/base/common/log.c 
../repo1/proj/base/common/log.h proj/base/common/log.h