Nhìn vào nguồn gốc của git, có một bình luận trong 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.
*/
Nếu bạn gọi git --exec-path
, bạn kết thúc gọi const char *git_exec_path(void)
trong exec_cmd.c. Trông như thế này:
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);
Bây giờ, _argv_exec_path_ được thiết lập khi bạn nói --exec-path=/some/where
như vậy có thể được giảm giá. Bạn đã tuyên bố rằng biến môi trường chưa được đặt. GIT_EXEC_PATH
được xác định trong quá trình biên dịch trong Makefile. Đi ngược lại, có vẻ như nó được định nghĩa là chỉ libexec/git-core
. Vì vậy, chúng ta cần phải nhìn vào những gì system_path() thay vào đó.
Tôi không chắc chắn liệu RUNTIME_PREFIX
được xác định cho bạn hay không. Nhưng khi đang định vị trong Makefile, tôi đã nhận thấy rằng prefix mặc định là $(HOME)
. Tôi nghi ngờ rằng điều này có thể là nguyên nhân của vấn đề của bạn.
Câu trả lời đơn giản là đặt này trong ~/.bashrc
:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
Nếu bạn muốn tìm hiểu thêm về những gì đang xảy ra, có thể bạn sẽ cần phải biên dịch git sử dụng port -d upgrade -f git-core
(hoặc tương tự) và xem xét chặt chẽ tại nhật ký xây dựng để xem vị trí tiền tố đang được đặt. Ngẫu nhiên, port cat git-core
cho thấy mức sử dụng nặng nề của ${prefix}
vì vậy nó nên (hy vọng) là hiển nhiên.
Nguồn
2009-09-23 13:32:37
Tôi gặp vấn đề tương tự, khi tôi cố gắng để hack git nhị phân trong gói Xcode. 'ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/git ~/bin/git' – shakthi