我们想做一些基本的钩子脚本,大家都可以共享——比如预先格式化提交消息。Git有钩子脚本,通常存储在<project>/. Git /hooks/下。但是,当人们进行克隆时,这些脚本不会传播,并且它们不受版本控制。
是否有一种好方法可以帮助每个人获得正确的钩子脚本?我能不能让那些钩子脚本指向我的repo中的版本控制脚本?
我们想做一些基本的钩子脚本,大家都可以共享——比如预先格式化提交消息。Git有钩子脚本,通常存储在<project>/. Git /hooks/下。但是,当人们进行克隆时,这些脚本不会传播,并且它们不受版本控制。
是否有一种好方法可以帮助每个人获得正确的钩子脚本?我能不能让那些钩子脚本指向我的repo中的版本控制脚本?
当前回答
我目前正在我们的代码库中工作,我遇到了一个名为husky的库,它简化了如何在团队中使用和共享GitHub Hooks。我强烈建议你调查一下。
其他回答
您可以使用托管解决方案来进行预提交钩子管理,例如预提交。 或者为服务器端git-hook提供集中式解决方案,如date .io。 它有内置的策略,如:
检测和防止秘密的合并。 执行正确的Git用户配置。 强制Jira票集成-在拉请求名称/提交消息中提到票号。
它不会替换所有的钩子,但它可以帮助开发人员使用最明显的钩子,而不必在每个钩子上都安装钩子 开发人员的电脑/回购。
免责声明:我是Datrees创始人之一
我想把几个答案合并成一个。假设你在你的项目/目录下:
设置自定义钩子
创建.githooks目录,并将你的钩子放在其中。(参见.git/hooks的例子) 创建一个.gitconfig文件,指向目录¹: Git config -f .gitconfig core。hooksPath .githooks 在你的Makefile中创建以下规则 enable-git-hooks: Git配置—本地包含。路径. . / .gitconfig $(警告记住,你必须审查自定义钩子!)
启用自定义钩子
每个开发人员都应该在检查后显式地启用这些自定义钩子。在README中添加一个指令,就像这样:
通过make Enable -git-hooks检查自定义钩子后启用它们。
对于Node.js用户来说,一个简单的解决方案就是更新包。json和
{
"name": "name",
"version": "0.0.1",
......
"scripts": {
"preinstall": "git config core.hooksPath hooks",
preinstall将在之前运行
npm安装
并重定向Git以查找。\hooks(或任何您选择的名称)目录中的钩子。这个目录应该模仿。\。Git \挂钩在文件名(减去.sample)和结构方面。
设想Maven和其他构建工具将具有与预安装相当的功能。
它还应该适用于所有平台。
如果需要更多信息,请参阅与团队共享Git钩子的两种方法。
我目前正在我们的代码库中工作,我遇到了一个名为husky的库,它简化了如何在团队中使用和共享GitHub Hooks。我强烈建议你调查一下。
对于Gradle用户
我发现这些脚本对于Gradle项目非常有用。
build.gradle
从:rootProject.file('gradle/install-git-hooks.gradle')
gradle - install-git-hooks gradle。
tasks.create(name: 'gitExecutableHooks') {
doLast {
Runtime.getRuntime().exec("chmod -R +x .git/hooks/");
}
}
task installGitHooks(type: Copy) {
from new File(rootProject.rootDir, 'pre-commit')
into { new File(rootProject.rootDir, '.git/hooks') }
}
gitExecutableHooks.dependsOn installGitHooks
clean.dependsOn gitExecutableHooks
未雨绸缪
.... your pre commit scripts goes here