使用python库“ pre-commit”,如何添加运行单个python文件的git pre-commit钩子?

时间:2019-11-18 19:36:04

标签: git pre-commit-hook pre-commit.com

我正在使用this库尝试向我的项目添加一个预提交钩子。需要花很多时间,而且我认为我想要的预提交检查不需要他们的大多数示例使用的较大范围。我要做的就是运行一个python文件。我要允许或禁止提交的内容取决于该文件是否已成功退出/完成(IE没有引发异常)。我做了一个.pre-commit-config.yaml,但是我不知道如何使它仅运行一个文件。

我基本上想输入git commit -m "whatever"以自动运行python myfile.py <-,并根据其退出代码,允许或禁止提交。对我的Yaml应该是什么样子有任何想法吗?

这是我到目前为止所拥有的:

repos:
-   repo: local
    hooks:
    - id: translation-file-check
      name: Check Translation Files Are Aligned
      description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues
      language: python
      entry: "./dir/subdir/myfile.py"

但是我收到以下错误消息:.An unexpected error has occurred: OSError: [WinError 193] %1 is not a valid Win32 application 我想是因为即使我将language设置为python,也希望该.py文件是.exe或其他内容。

1 个答案:

答案 0 :(得分:2)

非常接近!有两种方法可以使这项工作:

  1. 在文件中添加“ shebang”(#!/usr/bin/env python
    • 即使shebangs是posix事物,pre-commit仍包含规范化平台并使其在Windows上也能正常工作的代码!
  2. 使用entry: python ./dir/subdir/myfile.py

    repos:
    -   repo: local
        hooks:
        - id: translation-file-check
          name: Check Translation Files Are Aligned
          description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues
          language: python
          entry: python ./dir/subdir/myfile.py
    

(免责声明:我是pre-commit的作者)