嵌套Go模块场景下pre-commit无法识别golang文件的问题问询
问题原因
- pre-commit的路径匹配规则全局基于Git仓库根目录(即你场景里的
~/work/myrepo/)计算,你当前配置的files: ^eck-user-mgmt/规则本身符合路径要求,触发跳过的核心原因是:默认pre-commit run仅校验已经加入Git暂存区的文件,你执行命令时只暂存了.pre-commit-config.yaml配置文件,没有任何Go相关文件在暂存区,自然匹配不到符合钩子规则的文件,触发跳过逻辑。
解决方案
方案1:调整配置+正常执行(推荐)
修改eck-user-mgmt目录下的.pre-commit-config.yaml,细化文件匹配规则避免误匹配:
--- files: ^eck-user-mgmt/.*\.(go|mod|sum)$ repos: - repo: git://github.com/dnephin/pre-commit-golang rev: v0.4.0 hooks: - id: go-fmt - id: go-imports - id: go-unit-tests - id: go-mod-tidy - id: golangci-lint
后续执行校验前,把需要校验的Go文件加入暂存区即可正常触发:
# 暂存当前目录下的Go相关文件 + 配置文件 git add *.go go.mod go.sum .pre-commit-config.yaml # 执行校验 pre-commit run # 如需全量校验子目录下所有Go相关文件,执行以下命令 pre-commit run --all-files
方案2:不修改配置,执行时指定文件范围
如果不想改动现有配置,执行命令时主动传入需要校验的文件路径即可:
# 校验当前目录下所有Go相关文件 pre-commit run --files ./**/*.go go.mod go.sum
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

