如何将git hook脚本传递给远程仓库和团队成员

4
我是一个由4名成员组成的团队,我们在Azure DevOps中有一个Git仓库,我被分配任务添加Git hook(用于扫描缩进、不需要的空格等)。我知道Git hook必须添加到./.git/hooks中,我已经准备好了脚本。但是,我如何确保我的其他团队成员在他们的本地仓库中接收到我的脚本,以便在提交新文件之前进行代码检查呢?
值得注意的是,任何在.git中所做的更改都只会留在本地仓库中,但最简单的方法是让我的Git hook传递给所有我的团队成员呢?

https://dev59.com/snRC5IYBdhLWcg3wCMrX - phd
4个回答

3
这种钩子的问题在于它是一个客户端钩子,需要部署到所有用户上。相较于服务器端钩子,只需修改一次即可应用于每个用户的git push到该服务器。
在我的情况下,我要求我的用户将他们的.git/hooks/pre-commit文件建立符号链接到存储在仓库中的文件。这样,更新该文件就很容易,并且会自动应用到每个用户。

那个解决方案容易出错。我不想依赖我的朋友的好意来完成诸如符号链接之类的附加任务。难道没有其他选择吗? - undefined
@RubemPacelli 对于客户端钩子,总会有一些指示需要遵循,如果你想激活该钩子。我在企业环境中使用过这个,那里的“伙伴”是同事,指示是你必须遵循的指令。没有错误。 - undefined
没有什么能确保你的同事会遵循指示,这就是问题所在。 - undefined
@RubemPacelli 我同意你的观点。除了在企业环境中,这些指示被称为命令。你的同事会遵循它们。否则,他们将离开。 - undefined

2

我在代码库中提交钩子,并告诉我的团队成员可以通过设置 core.hooksPath 来使用它们,例如:

git config core.hooksPath './hooks'

这是我的GitHub上的示例存储库

0

对于 @ReneLink 和 @VonC 的答案,这里有另一种变化:

你可以提交一个脚本来设置任何仓库的钩子,并指示用户在其本地克隆上运行它。

例如,有一个名为 repo-setup.sh 的脚本:

#!/bin/bash

# set the hooksPath config to point to a versioned directory :
git config core.hooksPath './hooks'

# or :
#!/bin/bash

# set a symlink for 'pre-commit' hook :
ln -nsf ../../pre-commit-hook.sh .git/hooks/pre-commit

0
您可以在依赖安装阶段(npm installmavencargo等)设置git钩子,并从项目源代码中读取实际命令。
例如,请参考husky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接