2014-12-02 31 views
10

Obserwuję kroki w: http://git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Clientgit svn braku migracji z svn 1.8

przenieść repozytorium svn do git. Mój lokalny wersja svn jest: wersja

$ 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

Kiedy sklonować repozytorium pojawia się błąd odczytu lokalnego formatu systemu plików:

$ 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 

Zgodnie z tą notą wydania svn w formacie svn 1.8 wprowadzono format FS 6: http://subversion.apache.org/docs/release-notes/1.8.html#revprop-packing

Czy to może być git 2.1 Skrypt Perla nie jest jeszcze kompatybilny z tą wersją svn? Co ważniejsze, jak mogę przekonwertować to repozytorium svn na git?

+0

Próbowałem uaktualnić git do najnowszej wersji 2.2 i nadal otrzymuję ten sam błąd. – saschwarz

Odpowiedz

17

Dostałem odpowiedź na liście e-mailowej użytkowników git.

Rozwiązaniem jest uruchomienie lokalnego serwera svnserver i użycie protokołu 'svn' podczas uruchamiania 'git svn clone' zamiast protokołu 'file'. Dzięki temu git-svn nie musi analizować formatu pliku svn 1.8.

Więc zmieniłem w katalog /tmp i uruchomiłem svnserve -d. Byłem wtedy w stanie git svn clone svn://127.0.0.1/test-svn -s i poszło idealnie. Następnie zatrzymałem serwer svnserver i usunąłem tymczasowe repozytorium svn.

+0

Czy mógłbyś napisać przykład ze ścieżkami, które przechodzą do linii poleceń 'svnserve' i' ssh: // ... '? – Kromster

+8

'cd' do katalogu nadrzędnego' test-svn' (lub jakkolwiek repozytorium SVN jest wywoływane - używam tego przykładu). Następnie uruchom 'svnserve -d --foreground -r.". Twój adres URL repozytorium to teraz 'svn: // localhost/test-svn'. –

+0

Czy nie powinno to być 'svn: //' w twojej odpowiedzi, a nie 'ssh: //'? –