每个人都知道你不能在.git/hooks
中提交任何内容,因为它不是git存储库。
所以我编写了一个脚本来对.git/hooks
中的所有挂钩进行符号链接,指向位于my_repo/hooks/driver
的所有挂钩。现在,我可以随意跟踪和提交我的钩子。这是由多个线程中的几个堆栈溢出用户推荐的(参见下面的链接)。
Putting git hooks into repository
问题是我不希望其他开发人员(在同一个存储库上工作)手动运行我的脚本,它应该只是在他们提取或初始化存储库时自动运行(假设他们之前没有运行它) 。
有人有什么想法吗?跟踪git钩子的大量线程,一旦脚本被写入就自动化它(就像我一样)。 :(
答案 0 :(得分:1)
首次克隆存储库时,Git无法在本地系统上自动运行脚本。这将带来重大的安全问题。
您最好的行动方案可能是提供某种set-up-hooks
命令,将所需的符号链接安装到本地存储库中,并在README
或同等文档中包含运行此脚本的说明对于新开发者。
答案 1 :(得分:1)
根据您使用的技术,可能有办法将其挂钩到构建或依赖关系管理工具。
在Node.js世界中,人们使用的是
npm
的{{1}}脚本(https://docs.npmjs.com/misc/scripts):您可以在install/postinstall
文件中添加脚本命令
package.json
这将确保您的脚本在本地有人"scripts": {
"install": "link-my-git-hooks"
}
运行时运行。
Grunt:如果您正在使用Grunt(或类似的构建工具),您可以使用https://www.npmjs.com/package/grunt-githooks行的内容,这将在构建过程中安装钩子。当有人在本地运行npm install
来构建项目时,将安装/验证/更新您的Git-Hook。
所以这里的一般想法是你应该将安装钩子的过程与开发人员定期运行的东西集成在一起。我完全同意它不应该是人们通常忘记的额外步骤 - 将它添加到他们每天都在使用的东西中。
以上示例只是想法 - 可能有类似的工具/方法用于其他技术。