Git SVN не удается получить из репозитория SVN
Я хотел бы использовать SVN и Git вместе. У меня есть репозиторий svn, и я пытаюсь найти в рабочем каталоге, но я столкнулся с ошибкой, как показано ниже.
svn, версия 1.6.6 (r40053)
git версия 1.7.3.1.msysgit.0
Путь репозитория svn имеет файл:///d:/tmp/test-svn/repos
Это шаги, которые я сделал:
D:\tmp\test-svn>mkdir my-project
D:\tmp\test-svn>cd my-project
D:\tmp\test-svn\my-project>git svn init file:///d:/tmp/test-svn/repos
Initialized empty Git repository in D:/tmp/test-svn/my-project/.git/
D:\tmp\test-svn\my-project>git svn fetch
Couldn't open a repository: Unable to open an ra_local session to URL: Unable to
open repository 'file:///d:/tmp/test-svn/repos/my-project/trunk': Expected FS f
ormat '2'; found format '4' at C:\Program Files\Git/libexec/git-core/git-svn lin
e 1773
Так в чем проблема? Как получить данные из репозитория svn в рабочий каталог Git?
Спасибо.
Ответы
Ответ 1
Я думаю, что это следующая проблема: http://code.google.com/p/msysgit/issues/detail?id=298
Возможным решением является установка svnserve и использование протокола svn://
вместо file:///
См. здесь для настройки svnserve в Windows:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup-svnserve.html
UPDATE
svnserve
доступен как часть TortoiseSVN, если вы используете ОС Windows (я проверил с TortoiseSVN версии 1.8.6)
Затем вы только начинаете:
svnserve -d -R --root c:\path\to\svn\repo
и клонировать репозиторий следующей командой:
git svn clone svn://localhost/path/inside/svn/repo
Ответ 2
Я могу предложить клонировать ваш репозиторий SmartGit. Он имеет функциональность git -svn, реализованную в java, которая значительно быстрее, чем git -svn и превосходит ее. Надеюсь, это сработает для вас.
Но если у вас есть доступ к серверу репозитория SVN, я рекомендую вам установить SubGit. В этом случае вы получите репозиторий Git, который автоматически синхронизируется с репозиторием SVN (и совместим с безопасностью).
Оба подхода имеют большие преимущества перед git -svn: автоматические теги, игнорирование, перевод EOL. SubGit также пытается сохранить даты как можно, выполняя SVN.