Patrząc w źródle git, jest to komentarz w 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.
*/
Jeśli zadzwonisz git --exec-path
, skończyć się nazywając const char *git_exec_path(void)
w exec_cmd.c. To wygląda tak:
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);
Teraz _argv_exec_path_ jest ustawiony kiedy mówisz --exec-path=/some/where
więc mogą być dyskontowane. Stwierdziłeś, że zmienna środowiskowa nie jest ustawiona. GIT_EXEC_PATH
jest zdefiniowany podczas kompilacji w Makefile. Idąc w tył, wydaje się, że jest zdefiniowany jako libexec/git-core
. Musimy więc spojrzeć na to, co robi system_path().
Nie jestem pewien, czy dla Ciebie zdefiniowano RUNTIME_PREFIX
. Ale podczas korzystania z Makefile zauważyłem, że domyślnie prefix to $(HOME)
. Podejrzewam, że to może być przyczyną twoich problemów.
Odpowiedź jest prosta: aby umieścić to w ~/.bashrc
:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
Jeśli chcesz dowiedzieć się więcej o tym, co się dzieje, prawdopodobnie będziesz musiał przekompilować git przy użyciu port -d upgrade -f git-core
(lub podobny) i przyjrzeć w dzienniku kompilacji, aby zobaczyć, gdzie ustawia się prefiks. Nawiasem mówiąc, port cat git-core
pokazuje duże użycie ${prefix}
, więc powinno (miejmy nadzieję) być oczywiste.
Wpadłem na ten sam problem, kiedy próbowałem zhakować plik binarny git z pakietu Xcode. 'ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/git ~/bin/git' – shakthi