Git svn - Ошибка непризнанной схемы URL - программирование
Подтвердить что ты не робот

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

и установите завершенную метку, но все равно получите ошибку.

4b9b3361

Ответ 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)