OSX 10.10 Yosemite beta on git pull: git-sh-setup: нет такого файла или каталога


после обновления до OSX 10.10 Yosemite Beta, работает git pull возвращает следующую ошибку:

/ Library / Developer / CommandLineTools/usr / libexec/git-core / git-pull: строка 11: git-sh-setup: нет такого файла или каталога

Я проверил указанный каталог git-core и git-sh-setup.sh есть.

другие команды git работает так, как ожидалось

10 90

10 ответов:

Я думаю, что самое чистое решение для этого сейчас-это изменить начальную команду в вашем сеансе iTerm на

/usr/bin/login -f <your user name>

это устраняет проблему для меня.

еще одна точка данных для анализа проблемы: кажется, что в 10.10 существует несколько копий переменной среды PATH, и подобласти, похоже, предпочитают вторую копию.

вы можете воспроизвести это, запустив любое приложение cocoa на консоли, как запущено iTerm. Вы получите предупреждение это выглядит так:

2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored.  The first definition was '(the path I have configured in my shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.

Я считаю, что это проблема в 10.10, а не iTerm, но что-то, что делает iTerm, заставляет его проявляться (этого не происходит в терминале.приложение)

обновление: это вызвано тем, что iTerm делает "интересные" вещи для окружающей среды. Обновление до официального выпуска iTerm 2.0, чтобы сделать эту проблему уйти.

Я считаю, что это ошибка в iTerm при использовании zsh. Они намеренно не вызывают /usr/bin/login, и они не используют execle для очистки переменных среды, как они должны быть.

загрузка новейшей версии iTerm2 исправила это для меня!

другое решение, измените свой iTerm2

cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin

cat > iTerm <<EOF
#!/bin/sh
unset PATH
${0}-bin
EOF

chmod +x iTerm

сделано.

наслаждайтесь iTerm2 с Yosemite!

в качестве временного решения я изменил git-pull lines 11, 12 и 336, чтобы быть:

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"

это исправляет git-pull на данный момент, но я уверен, что есть лучшее решение.

вот временное исправление (при условии, что Homebrew и Git 2.0.0), если вам нужно, чтобы Git работал до официального исправления. Я устанавливаю две переменные оболочки:

export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"

... а потом заменили экземпляры git с соответствующими абсолютными ссылками. Вы можете использовать следующие логи сделать то же самое:

  • заменить /usr/местные/погреб/ГИТ/2.0.0/IP-адресов/ГИТ-основные/ГИТ-ш-настройки/ С git-sh-setup
  • заменить / usr / local / Cellar/git / 2.0.0 / libexec / git-core/git-stash/ С git-stash
  • заменить /usr / local / Cellar/git / 2.0.0 / libexec / git-core/git-pull/ С git-pull

это хак наверняка, но это заставит вас идти.

EDIT: убедитесь, что вы смотрите на ответ от @pilif, прежде чем делать это...

обходной путь Ubiquill применяется для git rebase (и, предположительно, в зависимости от того, какие другие функции не работают). В этом случае требуется заменить строки 47 и 48 следующим *:

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

* этот путь предполагает, что у вас установлен git с homebrew, и он живет внутри /usr/local/Cellar/git/2.0.0/.

отредактируйте файл git-pull и добавьте эту строку поверх него (сразу после блока комментариев)

PATH="$(dirname ):$PATH"

или просто скопируйте и вставьте это в терминале :

ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname ):$PATH"\n.\nwq'

обновление: как предполагается pilif, начиная с последнего обновления iTerm2 (1.0.0.20140629),git-pull работать правильно без этого PATH переопределить.

есть обновление git-rebase.sh

https://github.com/git/git/pull/110/files

обновление: все еще не работает с релизом, упомянутым ниже, моя ошибка. Git push работает Git pull не делает.

Мне кажется, что проблема была исправлена Apple с Mac OS X Yosemite 10.10 (14A329r). я нахожусь на общем бета-канале Yosemite (не разработчик). Git push/тянуть работает как ожидалось снова без каких-либо изменений.