【问题标题】:Make pre-commit hooks ignore submodules使预提交挂钩忽略子模块
【发布时间】:2021-04-15 07:50:41
【问题描述】:

我有一个 git repo,其中包含几个子模块,其代码内容超出了我的控制范围。我想在所有 pre-commit 挂钩中忽略这些子模块。除了为每个单独的钩子手动指定这些子模块所在的文件夹之外,还有什么方法可以实现这一点?

【问题讨论】:

  • 我认为这是自动行为,除非您 git submodule update,否则您的 repo 不会看到子模块更改。如果您在这些子模块中有本地更改,如果您不需要它们,您可以checkout它们

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


【解决方案1】:

默认情况下应该忽略子模块——它们会得到一个特殊的type标签submodule,通常不会通过普通的git钩子(默认情况下有一个[file]的过滤器)。

我的猜测是你的配置逃避了使用钩子的正常方式,并做了类似flake8 . 的事情——在这种情况下你应该切换到基于文件名的钩子。不看你的配置是不可能知道的,所以请通过编辑分享它


免责声明:我是 pre-commit 的创建者

【讨论】:

  • 这是导致麻烦的特定钩子:github.com/andreoliwa/nitpick/blob/develop/…
  • @RoyalTS -- 是的,这两个都有问题,如果由于滥用always_run 而没有任何变化,flake8 将针对存储库中的所有文件运行。 nitpick run 总是无条件地检查每个文件。他们已经避开了框架,您应该打开一个问题,要求他们更改为传递的 linting 文件名
  • @AnthonySottile 有没有办法检查每个钩子的默认类型?我的测试表明flake8的默认类型是[python]而不是[file]
  • @AnthonySottile 我的测试表明子模块在默认情况下确实被忽略了。但是,当我使用 identify-cli 检查时,子模块和文件夹都返回类型“目录”,那么预提交如何知道要忽略哪个?
  • @drowsyleilei 您无法将“文件夹”签入 git(仅文件),因此只有子模块是相关的
猜你喜欢
  • 2012-07-06
  • 2013-01-03
  • 2019-05-06
  • 2012-03-10
  • 2012-06-06
  • 2019-06-02
  • 2021-12-07
  • 1970-01-01
  • 2014-07-26
相关资源
最近更新 更多