OSX 10.10 yosemite beta на 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 ответов
Я думаю, что самое чистое решение для этого на данный момент состоит в том, чтобы изменить начальную команду в вашей сессии iTerm, чтобы
/usr/bin/login -f <your user name>
Это решает проблему для меня.
Еще одна точка данных для анализа проблемы: кажется, что в 10.10 существует несколько копий переменной среды PATH, и подоболочки, похоже, предпочитают вторую копию.
Вы можете воспроизвести это, запустив любое приложение какао на консоли, запущенное 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, заставляет его проявляться (этого не происходит в Terminal.app)
Обновление: это вызвано тем, что iTerm делает "интересные" вещи для окружающей среды. Обновите официальный выпуск iTerm 2.0, чтобы устранить эту проблему.
Я считаю, что это ошибка в iTerm при использовании Zsh. Они намеренно не вызывают /usr/bin/login, и они не используют execle для очистки переменных среды, какими они должны быть.
Другое решение, измените ваш 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 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
с соответствующими абсолютными ссылками. Вы можете использовать следующие Gists, чтобы сделать то же самое:
- Замените /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup/ на 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
Это взломать наверняка, но это поможет вам.
РЕДАКТИРОВАТЬ: Убедитесь, что вы смотрите на ответ @pilif, прежде чем делать это...
Есть обновление для git-rebase.sh
Отредактируйте ваш файл git-pull и добавьте эту строку поверх него (сразу после блока комментариев)
PATH="$(dirname $0):$PATH"
Или просто скопируйте и вставьте это в свой терминал:
ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'
Обновление: как полагает pilif, с момента последнего обновления iTerm2 (1.0.0.20140629), git-pull
беги правильно без этого PATH
переопределения.
Обходной путь 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 push работает Git pull не работает.
Мне кажется, что проблема была исправлена Apple с Mac OS X Yosemite 10.10 (14A329r). Я нахожусь на общем канале Beta Yosemite (не разработчик). Git push/вытащить работает как положено снова без каких-либо изменений.