2015-09-18 115 views
5

我有一個預先提交的鉤子,我想將它添加到存儲庫,以便通過檢查出來,我的同事立即就位。
但是,如果我嘗試添加它,我得到以下結果(在我的項目的根目錄爲):如何將我的預提交鉤子添加到現有的git存儲庫

$ git add .git/hooks/pre-commit 
error: Invalid path '.git/hooks/pre-commit' 
error: unable to add .git/hooks/pre-commit to index 

任何想法,如果這項工作,如何實現我的目標是什麼?

回答

7

檢查出來我的同事有它立即到位

2015年9月:這是不可能的:一個鉤子可以放在源代碼控制(只需在你自己的Git複製腳本回購),但它不能在克隆/簽出時「自動到位」(主動):這將是非常危險的,取決於鉤子實際在做什麼。
參見「Git remote/shared pre-commit hook

你仍然需要激活它,通過添加一個符號鏈接(即使是在Windows上)存在於混帳回購協議的pre-commit鉤子。

更新2016年12月:在OP Calamity Jane提到in the comments

我解決它現在在Symfony2的項目(並與其他人,也應該工作),以它作爲composer.json的一部分。
因此,如果一個同事正在做composer installcomposer update,它會自動放置在正確的位置。

"scripts": { "dev-install": [ "bash setup_phpcs.sh" ] }, 

因此,對開發,setup_phpcs.sh被自動調用並那份從倉庫到正確的位置的文件夾鉤。
由於掛鉤是存儲庫的一部分,因此可以輕鬆更新和分發。

+0

與另一個存儲庫我使用的符號鏈接到中央存儲庫,其效果是我的一半同事沒有使用掛鉤。 但是,如果它不以這種方式工作,那麼我會喜歡與我的其他存儲庫,我也可以理解爲什麼這不是所期望的。 –

+0

感謝您回答* why,這就是我想了解的關於@VonC的信息。 – Droogans

+0

順便說一下,我現在在symfony2項目中解決了它(並且還有其他方法也應該可以)將它作爲composer.json的一部分。 因此,如果一位同事正在執行作曲家安裝或作曲家更新,它會自動放置在正確的位置。 「腳本」:{ 「DEV-安裝」: 「慶典setup_phpcs.sh」 ] }, 於是就開發setup_phpcs.sh被自動調用並那份從文件夾在資源庫中的鉤正確的地方。由於鉤子是存儲庫的一部分,因此可以輕鬆更新和分發。 –

相關問題