Клон git svn умер от сигнала 11 на OSX

Я пытаюсь перенести проект с svn на git. Я использовал пакет osx svn, но я также пытался установить его с помощью homebrew. Я продолжаю получать ту же ошибку.

git svn clone http://myserver/myrepo
error: git-svn died of signal 11

Информация о версии:

git --version
git version 2.2.1

svn --version
svn, version 1.7.17 (r1591372)
   compiled Sep 18 2014, 13:06:44

Я управляю Йосемити.


person BarFooBar    schedule 30.01.2015    source источник
comment
Я бы предложил удалить их и просто загрузить XCode, в котором есть как git, так и svn в достаточно новых версиях.   -  person Thorbjørn Ravn Andersen    schedule 30.01.2015
comment
если вы установили git через brew перед обновлением до yosemite, вам может потребоваться обновить установку git через brew (brew upgrade git) — были исправления, связанные с Yosemite, в brew   -  person Mykola Gurov    schedule 30.01.2015
comment
Что говорит git svn --version? Вы должны сделать это в репозитории git, неважно в каком.   -  person Schwern    schedule 30.01.2015


Ответы (3)


git svn выполняет git-svn, программу Perl, которая использует привязки к libsvn, и эти привязки чувствительны. Если изменится Perl или SVN, это может привести к segfault. И то, и другое может произойти при обновлении ОС.

Узнайте, какую версию привязок SVN использует ваш git. Вот что я получаю для OS X 10.10.1

$ /usr/bin/git svn --version
git-svn version 1.9.3 (Apple Git-50) (svn 1.7.17)

Попробуйте brew upgrade git, как предложил @MykolaGurov в комментариях. Кажется, есть исправления для 10.10 и git-svn. Вы также можете попробовать brew reinstall subversion --with-perl переустановить привязки Perl.

Или используйте предоставленную OS X /usr/bin/git, которая будет собрана с предоставленной ОС SVN и Perl.

Или попробуйте MacPorts, я используйте его, и его git-svn работает. port install git +svn.

person Schwern    schedule 30.01.2015
comment
переустановка привязок Perl после обновления git работала как шарм. Спасибо! - person BarFooBar; 31.01.2015
comment
brew upgrade git и brew reinstall subversion --perl у меня работали - person bnjmn; 04.03.2015
comment
После обновления OS X: если brew upgrade git говорит, что самая новая версия уже установлена, а вы все еще получаете signal 11, попробуйте brew uninstall git, а затем переустановите с помощью brew install git. - person Tim; 05.05.2015
comment
Из лога при переустановке subversion: subversion: --perl was deprecated; using --with-perl instead!. - person D. Josefsson; 06.07.2015
comment
--perl/--with-perl больше не кажутся допустимыми вариантами. - person Pyves; 02.07.2020

Первое, что нужно сделать, это отладить команду git, чтобы увидеть, на каком компоненте она не работает, добавив GIT_TRACE=1, например.

$ GIT_TRACE=1 git svn clone https://example.com/svn/foo/ foo
21:12:40.239238 git.c:557               trace: exec: 'git-svn' 'clone' 'https://example.com/svn/foo/ foo/' 'foo'
21:12:40.240158 run-command.c:347       trace: run_command: 'git-svn' 'clone' 'https://example.com/svn/foo/ foo/' 'foo'
error: git-svn died of signal 11

и повторно запустите последнюю команду в поврежденном репозитории, которая показывает, что сбой произошел в двоичном файле git-svn.

Для этого вам нужно определить, где у вас есть двоичный файл git-svn, например.

$ which -a git-svn
$ locate git-svn | grep git-svn$
/Applications/GitHub.app/Contents/Resources/git/libexec/git-core/git-svn
/Applications/SourceTree.app/Contents/Resources/git_local/libexec/git-core/git-svn
/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-svn
/Library/Developer/CommandLineTools/usr/libexec/git-core/git-svn
/usr/local/libexec/git-core/git-svn
/usr/local/Cellar/git/1.8.4.1/libexec/git-core/git-svn
/usr/local/Cellar/git/2.4.0/libexec/git-core/git-svn

Если у вас есть несколько двоичных файлов git-svn, чтобы узнать, какой из них используется, запустите:

sudo fs_usage -f exec | grep git

в другом терминале, прежде чем снова запустить неудачную команду git.

После того, как вы определили, какой git-svn вы запускаете, запустите его напрямую, как:

/usr/local/libexec/git-core/git-svn ...
/usr/local/Cellar/git/2.4.0/libexec/git-core/git-svn 

и, скорее всего, произойдет сбой независимо от того, какой параметр вы укажете, в противном случае укажите, как показано в выводе трассировки.

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

$ stat /usr/local/libexec/git-core/git-svn
  File: ‘/usr/local/libexec/git-core/git-svn’ -> ‘/Applications/GitHub.app/Contents/Resources/git/libexec/git-core/git-svn’

Если это так, измените символическую ссылку на ту, которая не дает сбоев, например.

$ ln -vfs /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-svn /usr/local/libexec/git-core/git-svn 
‘/usr/local/libexec/git-core/git-svn’ -> ‘/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-svn’

В качестве альтернативы определите, к какому пакету принадлежит ваш git-svn, и обновите его соответствующим образом, например.

  • /Applications/Xcode.app -> обновить Xcode,
  • /Applications/GitHub.app -> обновить приложение GitHub
  • /usr/local/Cellar/git -> обновить git через Homebrew, например.

    brew upgrade git
    

    Если Homebrew будет жаловаться на конфликты файлов, запустите:

    brew link --overwrite git
    

Если у вас все еще происходит сбой после обновления, используйте другую версию (как указано выше), которая не дает сбой, например.

/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-svn clone https://example.com/svn/foo/ foo

Если это работает для вас, добавьте к своей команде PATH, а затем используйте вместо нее команду git-svn или добавьте псевдоним, например:

alias git-svn='/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-svn'

Если у вас есть недостающие зависимости для нового git-svn, установите Git::SVN, выполнив:

sudo cpan install Git::SVN

Отладка

Если вышеперечисленное не поможет, вы можете отлаживать его дальше. Вот несколько советов по запуску в отдельном терминале, а затем запуску сбойной команды:

sudo dtruss -fn git

or:

sudo dtruss -fn git-svn

Чтобы определить, какой git-svn вызывается, вы можете попробовать:

  • sudo /usr/bin/newproc.d
  • sudo fs_usage -f exec | grep git
person kenorb    schedule 18.03.2016

Мой случай был другим. Я указал учетные данные в URL-адресе https для моего репозитория svn. Удаление учетных данных решило проблему.

Как я запускал команду

git svn https://<key>:<pass>@example.com/repo

удалил ключ/пароль и команда проходит.

person Guy Mazuz    schedule 08.02.2021