同步 git hook 有啥优秀实践吗? - V2EX
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 3679 次点击
    这是一个创建于 1513 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究 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     Solana     1277 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 17:12 PVG 01:12 LAX 09:12 JFK 12:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86