Git и SVN на Windows
Я пытаюсь запустить git для своего локального репозитория и использовать SVN для своего центрального репозитория в проекте CodePlex. Я загрузил самую последнюю версию msysgit, но поддержка SVN не работает.
Следующее успешно инициализирует новый пустой репозиторий, а затем застревает:
git svn init https://myproject.svn.codeplex.com git svn fetch
После попытки выполнить выборку я получаю следующее:
Ошибка при проверке сертификата сервера для https://myproject.svn.codeplex.com:443: - Сертификат не выдан доверенным органом. Использовать отпечаток пальца, чтобы подтвердить сертификат вручную! Справочная информация: - Имя хоста: *.svn.codeplex.com - Действительно: с 23 мая 02:11:05 2009 по Гринвичу до 23 мая 02:11:05 2010 по Гринвичу - Эмитент: Redmond, Corp, Microsoft, Com - Отпечаток пальца: f0:89:78:18:47:70:e4:dc:27:01:27:9c:6f:44:4c:3f:8a:9b: объявление:79 (R) извлечь, принять (t) временно или принять (p) по ошибке? п
Как видите, я пытаюсь постоянно принять сертификат, но msysgit просто сидит и никогда не выполняет выборку.
Я делаю что-то неправильно? Поддержка не там? Я нашел похожий пост переполнения стека с декабря. Я не уверен, что симптомы, которые я испытываю, одинаковы или нет.
5 ответов
Я не совсем уверен, почему, но требуется довольно много времени, чтобы вернуться из подсказки выше, которая спрашивает, принимать ли сертификат или нет. Подождав около 15 минут, операция завершилась.
git-svn не очень хорошо работает на windows в моем опыте. Я бы посоветовал поместить ваш git import на что-то вроде github или любого другого git-хостинга и использовать "чистый" git на windows. Это предполагает, что у вас есть Unix (или в худшем случае Cygwin, который должен работать лучше, чем msysgit, я думаю) для выполнения обновлений git-svn. Это не идеально, очевидно.
Я получил это, добавив сертификаты в цепочку авторизации. Вы должны получить сертификат эмитента (CA) вашего серверного сертификата в формате.pem и скопировать его в каталог certs (PATH_TO_GIT\ssl\certs) с хэшированным именем. Создайте хеш следующим образом:
C:\> PATH_TO_GIT\bin\openssl.exe x509 -noout -hash -in PATH_TO_CA_CERT.PEM
Переименуйте CA-файл в вывод команды и добавьте ".0" как расширение (например, 0dbd0096.0). Таким образом, openssl находит центр сертификации, который можно использовать для сертификации вашего сертификата сервера.
Более подробную информацию вы найдете здесь: http://gagravarr.org/writing/openssl-certs/others.shtml
Codeplex и SVN так же медленны, как и архаичны. Вот то, что сработало для меня (другой проект купить, вы поняли)
git svn clone https://iswix.svn.codeplex.com/svn -r42691:HEAD
где 42691 был самым старым набором изменений в репо (или самым старым, который вы хотите получить), а HEAD - это... дух, голова.
Я нашел номер набора изменений, посмотрев вкладку истории на странице исходного кода. Это последний.
Я попробовал все виды настроек с TortoiseGit, но он не будет играть, командной строки или перебор.
А теперь иди завари чай или испеки торт, это займет довольно много времени.
Если (в Windows) вы открываете монитор ресурсов и ищите perl.exe в разделе "сеть" и видите, что он говорит с svn.codeplex.com, значит, он работает.
Использовать http без ssl. Я использую извлечение из sourceforge https://xmlvm.svn.sourceforge.net/svnroot/xmlvm/ приводит к возникновению этой проблемы, и я просто изменить URL-адрес на http://xmlvm.svn.sourceforge.net/svnroot/xmlvm/ Это прекрасно работает