2015-09-18 76 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被自动调用并那份从文件夹在资源库中的钩正确的地方。由于钩子是存储库的一部分,因此可以轻松更新和分发。 –

相关问题