我们想制作一些我们可以共享的基本钩子脚本 - 例如预格式化提交消息.Git有通常存储在其下的钩子脚本<project>/.git/hooks/.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播.
有没有一种好方法可以帮助每个人获得正确的钩子脚本?我可以让这些钩子脚本指向我的仓库中的版本控制脚本吗?
Max*_*eld 189
在Git 2.9中,配置选项core.hooksPath指定自定义钩子目录.
将挂钩移动到hooks存储库中的跟踪目录.然后,配置存储库的每个实例以使用跟踪hooks而不是$GIT_DIR/hooks:
git config core.hooksPath hooks
Run Code Online (Sandbox Code Playgroud)
通常,路径可以是绝对路径,也可以是相对于运行钩子的目录(通常是工作树根;请参阅说明部分man githooks).
mip*_*adi 138
从理论上讲,您可以hooks使用所有脚本在项目目录中创建一个目录(或您喜欢的任何名称),然后将它们符号链接.git/hooks.当然,每个克隆了repo的人都必须设置这些符号链接(尽管你可能会非常喜欢并且有一个部署脚本,克隆人可以运行它来半自动设置它们).
Sha*_*non 23
对于的NodeJS用户一个简单的解决方案是更新的package.json与
{
"name": "name",
"version": "0.0.1",
......
"scripts": {
"preinstall": "git config core.hooksPath hooks",
Run Code Online (Sandbox Code Playgroud)
该预安装将前运行
安装
并重定向 git 以在.\hooks(或您选择的任何名称)目录中查找挂钩。这个目录应该在文件名(减去 .sample)和结构方面模仿.\.git\hooks。
想象一下 Maven 和其他构建工具将有一个与preinstall等效的工具。
它也应该适用于所有平台。
如果您需要更多信息,请参阅https://www.viget.com/articles/two-ways-to-share-git-hooks-with-your-team/
cer*_*cem 15
我想将几个答案合并为一个。假设您在project/目录中:
创建.githooks目录并将您的钩子放入其中。(参见.git/hooks示例)
创建一个.gitconfig指向目录\xc2\xb9的文件:
git config -f .gitconfig core.hooksPath .githooks\nRun Code Online (Sandbox Code Playgroud)\nMakefile在您的:\xc2\xb2中创建以下规则
enable-git-hooks:\n git config --local include.path ../.gitconfig\n $(warning REMEMBER, YOU MUST HAVE REVIEWED THE CUSTOM HOOKS!)\nRun Code Online (Sandbox Code Playgroud)\n每个开发人员都应该在检查这些自定义挂钩后明确启用它们。在自述文件中添加一条指令,如下所示:
\n\n\n通过查看自定义挂钩后启用它们
\nmake enable-git-hooks。
kil*_*anc 13
如果您的项目是一个JavaScript项目并且您npm用作包管理器,则可以使用shared-git-hooks来强制执行githooks npm install.
大多数现代编程语言,或者更确切地说,它们的构建工具,都支持管理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