如何让pre-commit钩子在git commit时自动同步未修改文件的版本?
解决pre-commit钩子自动更新未暂存文件的问题
要让git commit时自动触发钩子更新那些未修改的Python文件,调整.pre-commit-config.yaml配置即可:
给目标钩子添加
files配置项,明确指定所有需要检查和更新的文件路径或匹配规则。比如你的场景里,要包含存储版本的CMakeLists.txt,以及需要同步版本的Python文件:- repo: https://github.com/degauden/euclid-pipeline-hooks.git rev: 1.0.0 hooks: - id: dependency-version-fixer always_run: true files: ^(CMakeLists.txt|SLE_IAL_Pipelines/auxdir/.*/PkgDef_.*\.py)$这里的正则表达式匹配了
CMakeLists.txt和指定目录下的所有PkgDef_*.py文件,确保pre-commit会把这些文件全部传递给钩子,不管它们是否处于暂存状态。逻辑说明:
always_run: true确保钩子每次提交都会执行,但默认只会传递已修改的文件;加上files指定所有目标文件后,pre-commit会把这些文件全传给钩子,钩子就能检测到版本变化并自动更新对应的Python文件。
操作后测试:修改CMakeLists.txt里的版本后执行git commit,钩子会处理所有指定文件并更新Python文件,之后你需要重新暂存被修改的Python文件,再执行git commit完成提交。
内容的提问来源于stack exchange,提问作者Hubert Degaudenzi
相关产品推荐
相关产品推荐

