V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
x97bgt
V2EX  ›  git

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

  •  
  •   x97bgt · 2021-10-10 23:11:46 +08:00 via iPhone · 3217 次点击
    这是一个创建于 1138 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究 git hook,想把代码格式、commit 格式这些统一一下,在 pre-commit 阶段进行检查。

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

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

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

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

    一般的实践是锁主分支,所有要合并到主分支的都得进行格式检查,格式检查不通过的不允许合并,然后告诉大家配置 hook 可以省掉一部分手动的格式化操作
    eudore
        4
    eudore  
       2021-10-11 08:56:19 +08:00
    服务端 git hook +1
    ccraohng
        5
    ccraohng  
       2021-10-11 09:01:21 +08:00
    node ? npm 有 postinstall 钩子
    ccraohng
        6
    ccraohng  
       2021-10-11 09:03:09 +08:00
    上面是本机,服务端 也设置 hook 就可以了,或者配合 github action 之类的
    Torpedo
        7
    Torpedo  
       2021-10-11 10:50:26 +08:00
    你们啥技术栈,没有 install 那一步吗?
    理论上把 hook 初始化放到 install 那一步就可以了
    x97bgt
        8
    x97bgt  
    OP
       2021-10-11 11:12:35 +08:00
    @Torpedo rust 项目。。。编译时貌似没有这一步。。
    x97bgt
        9
    x97bgt  
    OP
       2021-10-11 11:13:38 +08:00
    @ccraohng
    @eudore
    github 上貌似只有企业版的才能设置服务器 hook 。。。个人用户没法整的样子
    x97bgt
        10
    x97bgt  
    OP
       2021-10-11 11:14:04 +08:00
    @ccraohng 非 node 项目。我是想找一个更为通用,不局限于语言的解决方案。
    Torpedo
        11
    Torpedo  
       2021-10-11 12:26:42 +08:00
    @x97bgt rust 不是也要用 cargo 安装么?有安装这一步就可以配。
    另外 rust 肯定也有 rust 的 git hook
    wxrbw555
        12
    wxrbw555  
       2021-10-11 15:46:15 +08:00
    postinstall +1
    maichael
        13
    maichael  
       2021-10-11 15:49:06 +08:00
    强制的格式要求放到 CI 里面去执行,不通过就不能合代码。
    eudore
        14
    eudore  
       2021-10-11 16:25:18 +08:00
    @x97bgt 例如 gitlab 直接去改目录里面的 git 文件 /{groups}/{project}/hooks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5622 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 06:30 · PVG 14:30 · LAX 22:30 · JFK 01:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.