要对文件做校验,逻辑挺复杂的写了一个 py 脚本。想每一个开发者在提交前都自动运行脚本,有什么好的建议吗? 还有个想法,就是把校验程序放服务器,他们提交之前上传一下,自动校验,也是可以的,但是没有开发经验,略懂一些 web,其他不太会,不知有没有什么方法可以参考下。
1
u3u 2020-03-02 13:15:07 +08:00
git hooks: https://github.com/typicode/husky
|
2
wenzichel 2020-03-02 13:16:25 +08:00
pre-commit 的 git 钩子,在输入`git commit`后,先指定 pre-commit 指定的脚本,脚本通过后才执行 commit 操作,否则中断
|
3
nifury 2020-03-02 13:22:23 +08:00 1
这个听起来更像 travis-ci 能做的事情,只是 travis-ci 是在 commit 之后做校验的。
不过没通过校验的 commit 会有个红叉,所以应该也满足要求的吧? |
4
L00kback OP |
5
wunonglin 2020-03-02 13:43:06 +08:00 1
其实是可以跳过的,这种东西只能防君子不防小人的
|
6
L00kback OP @nifury 查了一下,好像可以满足需求,不知道使用过程中会不会有坑,我先再研究研究,有结果的话再来反馈下。非常感谢~
|
7
Justin13 2020-03-02 13:52:31 +08:00 via Android
看看 husky 这个库行不行。
|
8
no1xsyzy 2020-03-02 14:01:45 +08:00
不想被跳过就只有不给 master 写入权限,各人在自己分支上开发完发 PR 或者类似的东西进行合并。
一般还用不到这一层。 |
9
crysislinux 2020-03-02 14:19:45 +08:00 via Android
pre-commit 给本地检查。服务器上对分支检查,你这肯定不能都直接推 master 了
|
10
kaedea 2020-03-02 14:40:37 +08:00 via Android
建议弃坑
|
11
ExplorerLog 2020-03-02 14:54:39 +08:00
可以在 git server 端做啊
[Server-Side Hooks]( https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90) pre-receive |
12
ExplorerLog 2020-03-02 14:55:58 +08:00
pre-receive
处理来自客户端的推送操作时,最先被调用的脚本是 pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。 你可以用这个钩子阻止对引用进行非快进( non-fast-forward )的更新,或者对该推送所修改的所有引用和文件进行访问控制。 |
13
DoubleLove 2020-03-02 15:06:18 +08:00
如果是 gitlab 的话,可以在服务端配置,用户每次 push 的时候会触发服务端的 hooks ;
服务端的 hooks 有一个全局的,还可以为每个项目建立单独的 hooks ; [GitLab DocsAdministrator DocsServer hooks]( https://docs.gitlab.com/ce/administration/server_hooks.html) [Gitlab 服务器端 custom hook 配置]( https://www.jianshu.com/p/5531a21afa68) |
14
vevlins 2020-03-02 15:59:24 +08:00
本地加一个 husky,仓库加一个 ci
|
15
shawndev 2020-03-02 16:19:31 +08:00
server side hooks
|
16
ZombieMisaka 2020-03-02 16:24:19 +08:00
我这边是主开发分支没有直接修改权限,只能 mq,各自分支提交后跑脚本检查,不通过的话不允许合并
|