Für Git finden Sie die Anweisungen auf http://github.com/guides/import-from-subversion
Das letzte Mal, dass ich es manuell tat, habe ich die folgenden Befehle. (Dies war für ein Projekt, das Tags oder Zweige nicht genutzt. svn2git verwenden, kann bessere Ergebnisse als git-svn, wenn Sie Tags oder Zweige haben.)
cat "mysvnusername = Me Myself <[email protected]>" >> authors.txt
svnserve --daemon --foreground --root <SVN-REPO-PARENT-DIR>
git svn clone --stdlayout --authors-file=authors.txt --no-metadata svn://localhost/<SVN-REPO-NAME>
# push to a public repo and clone from there, to get push/pull working easily
cd <SVN-REPO-NAME>
git remote add origin [email protected]:mygithubusername/<GIT-REPO-NAME>.git
git push origin master
cd ..
rm -rf <SVN-REPO-NAME>
git clone [email protected]:mygithubusername/<GIT-REPO-NAME>.git
Aber da haben Sie einen Nicht-Standard-SVN-Repository Layout , müssen Sie die Parameter --trunk, --tags und --branches anstelle von --stdlayout für git svn clone angeben.
Um das ganze Erbe Geschichte Ihres Repository darstellen, könnten Sie versuchen, Ihr Repository Nachbestellung so dass anstelle einer Nicht-Standardhierarchie Sie ein Standard-Flach Repository Layout haben würde:
/branches/original-0.1
/branches/original-0.2
/branches/variantA-trunk
/branches/variantA-who-branch_for_xxx
/branches/variantA-she-branch_for_yyy
/branches/variantB-trunk
/branches/variantB-who-branch_for_zzz
...
, die es einfacher machen sollte für Import-Tools, um das Repository zu verstehen. Wenn sie importiert wurden, können Sie sie im neuen Repository besser reorganisieren.
Auch ich habe gehört, dass Git 1.6.x Deep Cloning unterstützt, so dass Sie git svn clone
Parameter wie --branches=branches/*/*
geben können, die tief in die Hierarchie für Filialen schauen wird. Ein Beispiel für die Verwendung finden Sie unter this post.
Wie Sie dies angehen, hängt weitgehend davon ab, welche DVCS Sie verwenden werden. –