2014-02-19 36 views
2

我在「Programm files」目錄中安裝了一個git,我沒有修改它的權限(只讀)。但我想提出一些新的鉤子。有沒有辦法在命令行中調用git並指定鉤子目錄的新路徑?如何爲git掛鉤目錄指定新路徑?

+0

你現在(2年後)有一個新的配置(適用於git 2.9,2016年6月):'core.hooksPath'。請參閱下面我編輯的答案。 – VonC

回答

4

Git掛鉤是本地的回購。

一旦你創建了一個回購協議(git init yourRepo),你會看到在yourRepo/.git/hooks那些掛鉤。


更新2016年5月的混帳2.9(2016年6月)

你有一個新的配置:core.hooksPath

通過Ævar Arnfjörð Bjarmason (avar)commit 867ad08commit de0824ecommit bf7d977commit 49fa52f(2016 05月04日)。
(由Junio C Hamano -- gitster --commit 6675f50合併年,2016年5月17日)

core.hooksPath 

默認情況下,Git會找你的鉤子在 '$GIT_DIR/hooks' 目錄。
將其設置爲不同的路徑,例如'/etc/git/hooks',Git將嘗試在該目錄中找到您的掛鉤,例如'/etc/git/hooks/pre-receive'而不是'$GIT_DIR/hooks/pre-receive'。

該路徑可以是絕對路徑,也可以是相對路徑。相對路徑視爲相對於在鉤運行目錄

「相對路徑」的一部分來自於Git Hooks man page

Git的調用鉤子,之前,它改變其工作目錄到非裸倉庫中的工作樹的根目錄或裸倉庫中的$GIT_DIR


原來的答覆(2014年2月)

你可以指定一個不同的TEMPLATEDIR(從git config

init.templatedir 

指定從哪個模板將被複制到的目錄。 (見的git-init(1)的「模板目錄」部分。)

缺省模板目錄包括一些目錄結構,一些建議的「排除模式」,和樣品的拷貝「鉤」的文件
建議的模式和鉤子文件都是可修改和可擴展的。

這將意味着一個新的回購協議(git init)將填補自定義文件夾,而不是默認的(這是您的git安裝的一部分),默認的內容(包括默認樣本掛鉤)。

+0

你先生是冠軍!優秀的細節(一如既往),以及你編輯了2年前給你的答案! – dubes

+0

@dubes我在這個答案中增加了更多的細節:http://stackoverflow.com/a/372​​93001/6309 – VonC

+0

'相對路徑被認爲是相對於掛鉤運行的目錄' 哪裏是掛鉤運行?很高興的文檔說清楚:/ –