"git pull" сломан
Недавно я обновил свой MacBook Pro до Snow Leopard и "git pull" возвращает:
rakudo $ git pull
git: 'pull' is not a git-command. See 'git --help'
Did you mean this?
shell
rakudo $ git-pull
-bash: git-pull: command not found
Я попытался переустановить через macports, но безрезультатно. Тогда я увидел это
rakudo $ git --exec-path
/Users/ovid/libexec/git-core
Это удивило меня, поскольку этот каталог не существует и никогда не существовал. Google не помогает здесь. Надеюсь, вы можете:)
Ответы
Ответ 1
В источнике git есть комментарий в git.c:
/*
* We use PATH to find git commands, but we prepend some higher
* precedence paths: the "--exec-path" option, the GIT_EXEC_PATH
* environment, and the $(gitexecdir) from the Makefile at build
* time.
*/
Если вы вызываете git --exec-path
, вы вызываете const char *git_exec_path(void)
в exec_cmd.c. Это выглядит так:
const char *env;
if (argv_exec_path)
return argv_exec_path;
env = getenv(EXEC_PATH_ENVIRONMENT);
if (env && *env) {
return env;
}
return system_path(GIT_EXEC_PATH);
Теперь _argv_exec_path_ устанавливается, когда вы говорите --exec-path=/some/where
, поэтому его можно сбрасывать со счетов. Вы указали, что переменная окружения не установлена. GIT_EXEC_PATH
определяется во время компиляции в Makefile. Возвращаясь назад, кажется, что он определен как libexec/git-core
. Итак, нам нужно посмотреть, что вместо system_path().
Я не уверен, что для вас определен RUNTIME_PREFIX
. Но в то время, когда я добавлял в Makefile, я заметил, что prefix по умолчанию - $(HOME)
. Я подозреваю, что это может быть причиной ваших проблем.
Простой ответ заключается в том, чтобы поместить это в ~/.bashrc
:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
Если вы хотите узнать больше о том, что происходит, вам, вероятно, придется перекомпилировать git с помощью port -d upgrade -f git-core
(или аналогичного) и внимательно посмотреть на журнал сборки, чтобы узнать, где установлен префикс. Кстати, port cat git-core
показывает интенсивное использование ${prefix}
, поэтому он должен (надеюсь) быть очевиден.
Ответ 2
Интересно. попробуйте echo $GIT_EXEC_PATH
, which git
. Это вряд ли связано с снежным зверем...
Ответ 3
В моей системе libexec/git-core
находится в /usr/local
, а не /opt/local
. Для каталога /usr/local/libexec
для меня были доступны только права доступа root, и это устранило проблему:
sudo chmod a+rx /usr/local/libexec
Ответ 4
Вы пробовали шаги на странице port wiki wiki? Это было болезненно, но после выполнения процесса удаления и переустановки --force
у меня не было проблем с каким-либо из моих портов, который включает в себя git
(при этом почти каждый вариант включен).
Ответ 5
Git легко компилируется, поэтому нет никакой причины беспокоиться о безумстве макспорта. Избавьтесь от того, что в /opt и попытайтесь построить его обычным способом. Скорее всего, это сработает.
Ответ 6
Другой вариант - загрузить с полезной страницы GitHub:
http://help.github.com/mac-git-installation/
У них есть автономный установщик (хотя второй вариант есть MacPorts...)
У них был очень хороший все в одном уроке, который теперь разбивается. Какой позор.
Ответ 7
Для меня это была проблема, которая была особенно актуальна для моей установки brew. В OSX 10.9.2 у меня был brew установлен под root, поэтому это работает для меня:
sudo su
export GIT_EXEC_PATH=/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core
brew update # or whatever you want from here