В 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/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 /Applications/SourceTree.app/Contents/Resources/git_local/lib/perl5/site_perl/5.18.2/darwin-thread-multi-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 и ввод ключа, как указано выше.
Ответ 8
Я обнаружил, что лучшее решение - это расширить список каталогов в @INC
используя экспорт
export PERL5LIB=/Applications/Xcode.app/Contents/Developer/Library/Perl/5.18
Ссылка от: https://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations