2013-07-25 26 views
22

Sto tentando di usare git svn per clonare una singola directory di un repository SVN in un repository Git.git svn clone di una singola directory di SVN repository

Se utilizzo git svn clone svn+ssh://path/to/repo/trunk/directory, ottengo un repository Git senza rami che rispecchiano i rami nel repository SVN di origine.

Se uso git svn --stdlayout svn+ssh://path/to/repo/trunk/directory, ottengo un repo Git vuota. Quello che segue è l'output del comando:

Initialized empty Git repository in /directory/.git/ 
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo 
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/directory' 
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history. 
This may take a while on large repositories 

Avevo letto che il modo per risolvere quanto sopra è stato quello di aggiungere un intervallo di revisione come -r 1000:HEAD, questo produce ancora un repo vuota. L'output è:

Initialized empty Git repository in /directory/.git/ 
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo 

Tutte le idee su come clonare una sottodirectory di un repository SVN usando git-svn che afferra ancora tutti i rami & tag dalla sorgente SVN respository?

risposta

38

Se non si desidera layout standard, si desidera qualcosa di simile:

git svn clone svn+ssh://path/to/repo/ --trunk=trunk/directory --branches=branches/*/directory --tags=tags/*/directory 
+7

L'intuizione è che è possibile utilizzare i caratteri jolly nell'argomento '--branches'. Bene. –

+2

Solo una nota - se non si dispone di filiali né i tag per quella specifica directory allora si può tranquillamente omettere '--branches' e' parametri --tags'. Quello che sta usando '--trunk = ...' invece di '--stdlayout' dovrebbe funzionare bene. – Nux

22

Preparare e inserire la directory di progetto locale:

mkdir local/project/path 
cd local/project/path 

inizializzare il repository git locale con svn remoto e prendere i dati:

git svn init http://my_svn_server.com/repository/project/location 
git svn fetch 

merito va a Gabriel Saldaña: ​​http://blog.gabrielsaldana.org/using-git-with-subversion-repository-subdirectory/

+2

funzionato come un fascino –

+1

Si noti che questo non consente l'aggiunta di utenti (autori) file di mapping. Almeno non con '-A'. – Nux

+1

Questo è praticamente non è diverso rispetto al git svn clone' di uno stadio 'solito. – MarkHu

Problemi correlati