Blick in die Quelle git, gibt es einen Kommentar in 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.
*/
Wenn Sie git --exec-path
nennen, erhalten Sie const char *git_exec_path(void)
in exec_cmd.c aufrufen. Das sieht wie folgt aus:
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);
Nun _argv_exec_path_ gesetzt, wenn Sie sagen, --exec-path=/some/where
so diskontiert werden kann. Sie haben angegeben, dass die Umgebungsvariable nicht festgelegt ist. GIT_EXEC_PATH
wird beim Kompilieren in Makefile definiert. Wenn man rückwärts geht, scheint es nur libexec/git-core
zu sein. Also müssen wir schauen, was system_path() stattdessen tut.
Ich bin mir nicht sicher, ob RUNTIME_PREFIX
für Sie definiert ist. Aber während ich im Makefile tippte, bemerkte ich, dass prefix standardmäßig $(HOME)
ist. Ich vermute, dass dies die Ursache Ihrer Probleme sein könnte.
Die einfache Antwort ist dies in ~/.bashrc
zu setzen:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
Wenn Sie möchten, um mehr darüber zu erfahren, was los ist, werden Sie wahrscheinlich git neu kompilieren port -d upgrade -f git-core
(oder ähnlich) und genau hinsehen im Build-Protokoll, um zu sehen, wo das Präfix gesetzt wird. Übrigens, port cat git-core
zeigt starke Verwendung von ${prefix}
so sollte es (hoffentlich) offensichtlich sein.
Ich lief in gleiches Problem, wenn ich versuchte, git binary aus Xcode Paket zu hacken. 'ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/git ~/bin/git' – shakthi