2014-12-02 21 views
10

Sto seguendo la procedura descritta in: http://git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Clientmigrazione svn git non riuscendo con svn 1.8

Per spostare un repository SVN a Git. La mia versione svn locale è: versione

$ svn --version svn, version 1.8.10 (r1615264) compiled Aug 25 2014, 10:52:18 on x86_64-apple-darwin12.5.0

git:

$ git --version git version 2.1.0

Quando ho clonare il repository ottengo un errore di lettura del formato di file system locale:

$ git svn clone file:///tmp/test-svn -s 
Initialized empty Git repository in /private/tmp/test-svn/.git/ 
Couldn't open a repository: Unable to connect to a repository at URL 'file:///tmp/test-svn': Unable to open an ra_local session to URL: Unable to open repository 'file:///tmp/test-svn': Expected FS format between '1' and '4'; found format '6' at /usr/local/Cellar/git/2.1.0/lib/perl5/site_perl/Git/SVN.pm line 310 

Secondo questa nota di rilascio di svn, il formato 6 di FS è stato introdotto in svn 1.8: http://subversion.apache.org/docs/release-notes/1.8.html#revprop-packing

Potrebbe essere il git 2.1 Lo script Perl non è ancora compatibile con questa versione di svn? Ancora più importante, come posso ottenere questo repository svn convertito in git?

+0

Ho provato ad aggiornare git all'ultima versione 2.2 e ho ancora lo stesso errore. – saschwarz

risposta

17

Ho ricevuto una risposta nella mailing list di git-users.

La soluzione è eseguire un svnserver locale e utilizzare il protocollo 'svn' quando si esegue 'git svn clone' invece del protocollo 'file'. Questo evita che git-svn debba analizzare il formato di file svn 1.8.

Quindi ho cambiato la directory /tmp e ho eseguito svnserve -d. Sono stato quindi in grado di git svn clone svn://127.0.0.1/test-svn -s ed è andato perfettamente. Poi ho fermato il svnserver e cancellato il repository svn temporaneo.

+0

Potresti scrivere un esempio con i percorsi che vanno nella riga di comando 'svnserve' e' ssh: // ... '? – Kromster

+8

'cd' nella directory padre di' test-svn' (o qualunque sia il vostro repo SVN chiamato-sto usando quell'esempio). Quindi eseguire 'svnserve -d --foreground -r .'. L'URL del repository è ora 'svn: // localhost/test-svn'. –

+0

Non dovrebbe essere "svn: //" nella tua risposta, non 'ssh: //'? –