В OSX с использованием sourcetree/git -svn получение "Не удается найти SVN/Core.pm в @INC"

Я использую OSX и хочу получить репозиторий svn в локальном репо git, используя sourcetree.

Когда я добавляю закладку, используя sourcetree, используя URL-адрес SVN, sourcetree знает его SVN-url, но когда я нажимаю кнопку clone, он сообщает об ошибке, например:

Can't locate SVN/Core.pm in @INC (@INC contains: /usr/local/git/lib/perl5/site_perl /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/Git/SVN/Editor.pm line 5.
BEGIN failed--compilation aborted at /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/Git/SVN/Editor.pm line 5.
Compilation failed in require at /Applications/SourceTree.app/Contents/Resources/git_local/libexec/git-core/git-svn line 81.
BEGIN failed--compilation aborted at /Applications/SourceTree.app/Contents/Resources/git_local/libexec/git-core/git-svn line 81.

Я не понимаю, как это пройти. Может ли кто-нибудь дать мне указатель на то, как это сделать?

Ответ 1

Я недавно обнаружил эту недостающую проблему SVN/Core.pm с el capitain.

Исправление, которое я использовал, было из блога Пауля Шрайбера:

sudo mkdir /Library/Perl/5.18/auto
sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi‌-2level/SVN /Library/Perl/5.18/darwin-thread-multi-2level
sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi‌-2level/auto/SVN /Library/Perl/5.18/auto/


Комментаторы ниже, говорят, что это сработало и на сьерре и на высоких сьеррах.

Ответ 2

Или, если у вас нет Xcode, просто CommandLineTools (это находится на ElCapitan 10.11.6):

sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/auto/SVN

Если вы ранее связали какую-то старую версию или просто сделали ошибку, она дает вам: File exists, тогда вы должны сначала сделать

sudo unlink /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level/SVN

для любого файла, который, как сообщается, уже существует, конечно.

EDIT Dir не существует: (предложенный @rogeriopradoj)

mkdir -p /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level

EDIT Sierra:
После перехода на Сьерра я потерял CommandLineTools, поэтому мне просто пришлось переустановить его, и все вернулось к нормальной жизни.
Это заставит вас установить только CommandLineTools, а не весь Xcode.

xcode-select --install

Надеюсь, это поможет кому-то:)

Ответ 3

В моем случае это связано с тем, что brew установил другой версионный perl как зависимость какой-то формулы и переопределяет системную версию по умолчанию.

Поэтому для меня решение состоит в том, чтобы избавиться от переопределенного, как описано ниже.


когда perl -v which perl и perl -v, я нахожу, что это не версия системы по умолчанию:

# locate programs
[email protected]:~|⇒  whereis perl
/usr/bin/perl

# locate a program file in the user path
[email protected]:~|⇒  which perl
/usr/local/bin/perl

[email protected]:~|⇒  perl -v

This is perl 5, version 26, subversion 1 (v5.26.1) built for darwin-thread-multi-2level

который должен быть v5.18.2 в соответствии с сообщениями об ошибках git svn.

Я предполагаю, что это потому, что другой версионный perl был установлен brew как зависимость какой-то формулы и переопределяет версию системы по умолчанию.

[email protected]:~|⇒  brew uses perl --installed
subversion

Чтобы доказать это, попробуйте переместить /usr/bin перед /usr/local/bin в $ PATH, тогда perl был откатом к системной версии по умолчанию:

[email protected]:~|⇒  echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

[email protected]:~|⇒  PATH=/usr/bin:$PATH
[email protected]:~|⇒  echo $PATH
/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

[email protected]:~|⇒  whereis perl
/usr/bin/perl

[email protected]:~|⇒  which perl
/usr/bin/perl

[email protected]:~|⇒  perl -v

This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)

и perl -v перечисляет @INC, просто удовлетворяющий Can't locate SVN/Core.pm in @INC требованиях Can't locate SVN/Core.pm in @INC:

[email protected]:~|⇒  perl -V
Summary of my perl5 (revision 5 version 18 subversion 2) configuration:

  @INC:
    /Library/Perl/5.18/darwin-thread-multi-2level
    /Library/Perl/5.18
    /Network/Library/Perl/5.18/darwin-thread-multi-2level
    /Network/Library/Perl/5.18
    /Library/Perl/Updates/5.18.2
    /System/Library/Perl/5.18/darwin-thread-multi-2level
    /System/Library/Perl/5.18
    /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
    /System/Library/Perl/Extras/5.18

наберите git svn и все работает хорошо!

[email protected]:~|⇒  git svn --version
git-svn version 2.15.1 (Apple Git-101) (svn 1.9.7)

Ответ 4

Плюс к самому высокому ответу: если вы используете souceTree, просто вставьте командную строку, возможно, не сразу. В этом случае вам может понадобиться проверить git, используемый в вашем sourceTree, который должен быть установлен как System git.

Ответ 5

Спасибо Марко, я обнаружил, что на ElCapitan 10.11.3 мне пришлось символически ссылаться на другую область. Не знаю, почему, но это работает.

sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin‌​-thread-multi-2level‌​/SVN /Applications/SourceTree.app/Contents/Resources/git_local/li‌​b/perl5/site_perl/5.‌​18.2/darwin-thread-m‌​ulti-2level/SVN
sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin‌​-thread-multi-2level‌​/auto/SVN /Applications/SourceTree.app/Contents/Resources/git_local/li‌​b/perl5/site_perl/5.‌​18.2/darwin-thread-m‌​ulti-2level/auto/SVN

Ответ 6

Я получил ту же проблему на Macos Mojave 10.14.1. Потому что я использовал встроенную версию git, и она тоже ниже (2.19.0). Я исправил это путем обновления git до последней версии (2.21.0), и я обнаружил, что 2.19.1 также не имеет этой проблемы.

Ответ 7

Решение для меня состояло в том, чтобы удалить запись пароля в приложении OSX key ring и заставить git svn заново создать его. Моя ключевая запись была создана ранее (я полагаю, svn), и кажется, что git не может использовать эту ключевую запись (ни исправить, ни добавить вторую).

Длинная история: я заметил, что при использовании "системного мерзавца" в SourceTree, похоже, возникла проблема с сохранением учетных данных. Когда я вводил одну и ту же команду git (которую выдает SourceTree) в командной строке, git каждый раз запрашивал мой пароль.

Тогда я нашел fooobar.com/questions/177594/...

Если вы заинтересованы, моя установка была:

Я пытался безуспешно:

  • "встроенный мерзавец" (выдает ошибку @INC)
  • "system git" (другая ошибка: "Имя пользователя: использование неинициализированного значения $ ret в chomp по адресу /usr/local/Cellar/git/2.21.0/share/perl5/Git.pm строка 596.")
  • поместите usr/bin перед моим PATH, как предложено выше
  • принудительно удаленный Perl в доморощенных

Все без успеха. Решением была система git и ввод ключа, как указано выше.