同步 git hook 有啥优秀实践吗?

2021-10-10 23:11:46 +08:00
 x97bgt
最近在研究 git hook,想把代码格式、commit 格式这些统一一下,在 pre-commit 阶段进行检查。

但问题是,hook 所在目录.git 就不会被同步到仓库里。每个人都需要在本地配置一把。

诸如 husky 或 pre-commit 的工具,在 git clone 后也需要 install 一下才会安装好 hook,而且需要本机上有 npm 或 python 。install 这一步不是强制的,万一有人不执行就没用了。

对于这个需求,有啥好办法么?可以强制所有人在 commit 前进行代码和 commit 信息的 lint 的。
3255 次点击
所在节点    git
14 条回复
EscYezi
2021-10-11 01:28:45 +08:00
公司用的 gerrit 应该是配置了什么,没有 changeId 的 commit push 会被拒绝,运行一个配置 hook 的脚本后,每次提交都会自动附上 changeID,可以正常 push

楼主如果有权限可以考虑在 remote 做类似的限制
molvqingtai
2021-10-11 02:39:29 +08:00
写过一篇关于 githooks 的文章,希望对你有帮助
https://juejin.cn/post/6971812117993226248?share_token=649cce7d-f8af-465d-b22b-314f6cb797fe
seki
2021-10-11 03:19:17 +08:00
git hook 本来就是方便开发的工具,装上了可以省掉一些手动跑命令的步骤

一般的实践是锁主分支,所有要合并到主分支的都得进行格式检查,格式检查不通过的不允许合并,然后告诉大家配置 hook 可以省掉一部分手动的格式化操作
eudore
2021-10-11 08:56:19 +08:00
服务端 git hook +1
ccraohng
2021-10-11 09:01:21 +08:00
node ? npm 有 postinstall 钩子
ccraohng
2021-10-11 09:03:09 +08:00
上面是本机,服务端 也设置 hook 就可以了,或者配合 github action 之类的
Torpedo
2021-10-11 10:50:26 +08:00
你们啥技术栈,没有 install 那一步吗?
理论上把 hook 初始化放到 install 那一步就可以了
x97bgt
2021-10-11 11:12:35 +08:00
@Torpedo rust 项目。。。编译时貌似没有这一步。。
x97bgt
2021-10-11 11:13:38 +08:00
@ccraohng
@eudore
github 上貌似只有企业版的才能设置服务器 hook 。。。个人用户没法整的样子
x97bgt
2021-10-11 11:14:04 +08:00
@ccraohng 非 node 项目。我是想找一个更为通用,不局限于语言的解决方案。
Torpedo
2021-10-11 12:26:42 +08:00
@x97bgt rust 不是也要用 cargo 安装么?有安装这一步就可以配。
另外 rust 肯定也有 rust 的 git hook
wxrbw555
2021-10-11 15:46:15 +08:00
postinstall +1
maichael
2021-10-11 15:49:06 +08:00
强制的格式要求放到 CI 里面去执行,不通过就不能合代码。
eudore
2021-10-11 16:25:18 +08:00
@x97bgt 例如 gitlab 直接去改目录里面的 git 文件 /{groups}/{project}/hooks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX