我们想制作一些我们可以共享的基本钩子脚本 - 例如预格式化提交消息.Git有通常存储在其下的钩子脚本
.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播.
有没有一种好方法可以帮助每个人获得正确的钩子脚本?我可以让这些钩子脚本指向我的仓库中的版本控制脚本吗?
在Git 2.9中,配置选项core.hooksPath
指定自定义钩子目录.
将挂钩移动到hooks
存储库中的跟踪目录.然后,配置存储库的每个实例以使用跟踪hooks
而不是$GIT_DIR/hooks
:
git config core.hooksPath hooks
通常,路径可以是绝对路径,也可以是相对于运行钩子的目录(通常是工作树根;请参阅说明部分man githooks
).
从理论上讲,您可以hooks
使用所有脚本在项目目录中创建一个目录(或您喜欢的任何名称),然后将它们符号链接.git/hooks
.当然,每个克隆了repo的人都必须设置这些符号链接(尽管你可能会非常喜欢并且有一个部署脚本,克隆人可以运行它来半自动设置它们).
如果您的项目是一个JavaScript项目并且您npm
用作包管理器,则可以使用shared-git-hooks来强制执行githooks npm install
.
如何git-hooks,它将.git/hooks
调用路由到项目目录下的脚本githooks
.
还有很多功能可以让您最大限度地减少复制和符号链接挂钩.
大多数现代编程语言,或者更确切地说,它们的构建工具,都支持管理git hook的插件。这意味着您只需要配置package.json,pom.xml等,团队中的任何人就别无选择,除非他们更改构建文件。该插件将为您添加内容到.git目录。
例子:
https://github.com/rudikershaw/git-build-hook
https://github.com/olukyrich/githook-maven-plugin
https://www.npmjs.com/package/git-hooks