配置pre-commit+SQLFluff校验时被要求Gitlab身份认证问题求助
pre-commit联动SQLFluff时要求Gitlab凭证的解决方案
首先明确根因:SQLFluff客户端钩子本身不需要访问Gitlab服务,触发身份校验的是pre-commit的环境初始化逻辑。pre-commit运行前会拉取.pre-commit-config.yaml中配置的所有钩子对应的仓库源码到本地缓存,如果你配置的SQLFluff钩子仓库是企业内部Gitlab的私有项目,且使用了HTTPS协议地址,就会触发Git的身份校验流程,和SQLFluff本身的校验逻辑无关。
你遇到的报错信息如下:
[INFO] Initializing environment for *我的Gitlab地址* Username for '*我的Gitlab地址*':
可按以下任意方案解决:
- 替换仓库协议为SSH
将.pre-commit-config.yaml中对应钩子的repo字段从HTTPS地址改为SSH格式,示例:
原配置:repo: https://你的企业Gitlab地址/组名/sqlfluff.git
修改后:repo: git@你的企业Gitlab地址:组名/sqlfluff.git
提前确保你本地已将SSH公钥添加到企业Gitlab账号中,且账号拥有对应仓库的读权限即可免密拉取。 - 配置Git凭证使用个人访问令牌
进入企业Gitlab个人设置的「访问令牌」页面,创建一个勾选了read_repository权限的个人访问令牌(PAT),之后在终端执行:git config --global credential.helper store
下次弹出用户名输入框时填写你的企业SSO账号名,密码栏填写刚才生成的PAT,Git会自动永久保存该凭证,后续不会再重复提示校验。 - 改用官方公开钩子仓库
如果你不需要使用企业内部定制的SQLFluff版本,可以直接把钩子的repo字段替换为官方公开仓库地址:repo: https://github.com/sqlfluff/sqlfluff.git
公开仓库拉取不需要身份校验,可直接跳过认证环节。
内容的提问来源于stack exchange,提问作者Josh Olsen
相关产品推荐
相关产品推荐

