3
我已經編寫了一套Git插件供工作時在內部使用。它需要在全局模板目錄中安裝一些Git鉤子,但是我在編程方式上找不到Git實際安裝的目錄。我在發現安裝在我們的開發服務器:如何找到安裝Git的目錄?
/usr/share/git-core
/usr/local/share/git-core
/usr/local/git/share/git-core
某些服務器,由於以前的安裝,已經安裝在這些目錄中的一種以上的Git 。我正在尋找一種方法來找出真實的模板目錄,其中git init
將複製模板文件。
的git init
代碼的問題是在copy_templates()
:
if (!template_dir)
template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
if (!template_dir)
template_dir = init_db_template_dir;
if (!template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
return;
然而,當它實際上將要複製的模板,這個代碼僅運行,因此,似乎沒有要找出一個方法是什麼DEFAULT_GIT_TEMPLATE_DIR
真的是事先。
我迄今爲止最好的辦法是(僞):
for each possible directory:
create a random_filename
create a file in the template directory with $random_filename
`git init` a new temporary repository
check for the existence of $random_filename in the new repo
if it exists, we found the real template directory
這仍然具有建構的「可能的」目錄列表如上的限制。
有沒有更好的方法?
瘋狂。我實現了上述想法,但是在一臺服務器上,root用戶運行'/ usr/bin/git',其他人都在運行'/ usr/local/bin/git',所以它仍然有錯誤的目錄。 – 2013-04-26 04:44:54
我知道這是一個愚蠢的回答,但是在每個git安裝中安裝模板會有什麼危害嗎? – Alan 2013-04-26 04:47:02
@Alan:嗯。當然沒有。好計劃。 – 2013-04-26 04:49:24