Git svn - Ошибка непризнанной схемы URL
Я получаю следующую ошибку при попытке клонирования svn rep с помощью git svn:
eugene$ git svn clone https://my.site/svn/ here
Initialized empty Git repository in /Users/eugene/Documents/workspace/test/here/.git/
Bad URL passed to RA layer: Unrecognized URL scheme for 'https://my.site/svn' at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 148.
svn checkout https://my.site/svn/
отлично работает.
Я снова запустил
cpan SVN::Core
и установите завершенную метку, но все равно получите ошибку.
Ответы
Ответ 1
По-видимому, у вас есть две разные версии двоичных файлов Subversion, и одна из этих версий не поддерживает протокол http(s)://
.
Если вы запустите svn --version
, вывод должен содержать следующее:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
или
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- handles 'http' scheme
- handles 'https' scheme
Проблема заключается в том, что git-svn
не использует одни и те же двоичные файлы. Вместо этого он использует другую версию SVN, которая скомпилирована без поддержки протокола http (s)://. Для этого могут быть разные причины:
-
Если svn --version -q
печатает 1.7.x
, скорее всего, ваша установка Git слишком старая, чтобы использовать эту версию SVN. Таким образом, вы можете обновить его как последние версии git-svn
поддержки SVN 1.7.
-
Если ваша установка по умолчанию SVN не имеет установленной привязки Perl, SVN:: Core использует двоичные файлы без поддержки http (s) в качестве резервной копии. Таким образом, вы можете включить привязки Perl для SVN.
-
Наконец, из-за некорректной конфигурации модулей Perl PATH/LD_LIBRARY_PATH или PERL5LIB (или любой другой git-svn
использует для поиска библиотеки - я не эксперт здесь), git-svn
просто использует недопустимые двоичные файлы.
Конкретные шаги по устранению проблемы зависят от того, как вы управляете пакетами, например. с Homebrew, который будет выглядеть так:
$ brew remove svn
$ brew install --with-perl svn
или
$ brew remove git
$ brew install git
Или с MacPorts что-то вроде этого:
$ port install subversion-perlbindings
или
$ port upgrade git-core +svn
После этого попробуйте указать правильный путь к библиотеке. Например. если which svn
печатает /usr/local/bin/svn
, попробуйте использовать /usr/local/lib
как путь к библиотеке для модулей Perl.
Надеюсь, что это поможет.
Ответ 2
Вы можете сделать: git svn --version
Смотрите этот вопрос: Как обновить версию SVN, используемую git -svn
UPDATE
Обратите внимание, что этот ответ был в ответ на оригинальную версию плаката вопроса, в котором проблема могла быть связана с использованием более старой версии svn
в git-svn
. С тех пор плакат обновил git, определил, что это не причина, и скорректировал вопрос, чтобы отразить это.
Ответ 3
Вероятно, это связано с несовместимостью библиотеки SVN:: Core perl или с обновлением инструментов командной строки XCode.
Вы можете попробовать обновить его локально:
cpan SVN::Core
или глобально:
sudo cpan SVN::Core
или если вы используете brew, попробуйте установить его через brew:
brew install --perl subversion
brew reinstall git
Если он все еще не работает, проверьте нашу переменную PERL5LIB:
echo $PERL5LIB
если он настроен на то, что вам не нужно, вы можете отключить его для тестирования:
unset PERL5LIB
Если это помогает, найдите файл, который определен (например, ~/.profile) и удалите его оттуда.
Если у вас несколько библиотек perl, вы можете указать переменную среды PERL5LIB в файле ~/.profile
, например.
export PERL5LIB="/Users/my_user/perl5/lib/perl5:/Library/Perl/5.16:/Applications/Xcode.app/Contents/Developer/Library/Perl/5.16"
Иногда проблема просто заключается в том, чтобы указывать PERL5LIB на более раннюю версию библиотеки perl, например. 5.12 вместо 5.16.
Простой способ найти все экземпляры SVN:: Core, вы можете попробовать:
sudo /usr/libexec/locate.updatedb # Only for the first time
locate Core.pm | grep Core.pm$
Статьи по теме:
Ответ 4
Когда я снова столкнулся с этой ошибкой после обновления MacOS до Mojave, я думаю, что я тоже могу сделать трюк, как и раньше, путем brew reinstall git
, как я прокомментировал принятый ответ.
но я потерпел неудачу, к сожалению. Любые другие данные, которые я искал, не могут мне помочь. Поэтому я полностью удаляю git путем обрезания артефактов установки.
$ cd /usr/local
$ sudo rm -fr git
$ sudo rm -fr /usr/bin/git*
теперь установите последнюю версию git/git-svn через варево:
$ brew install git
$ git --version
git version 2.19.2
$ brew install git-svn
при завершении установки я ввожу свой корневой каталог проекта и проверяю, может ли он работать или нет:
$ cd <my project root dir>
$ git svn rebase
here output the repository updates
информация о git-svn pull показала мне, что означает, что она снова работала.
теперь информация о версии:
$ git --version
git-svn version 2.19.2 (svn 1.10.0)
до:
$ git svn --version
git-svn version 2.19.0 (svn 1.8.11)