3

所以我目前正在设置一个 git pre-commit 钩子来使用 iSort 和 python Black 对我的 python 文件进行 lint,我遇到的问题是,当我使用git commit --verbose提交编辑器中显示的差异时,实际上并没有考虑了对暂存文件的修改。

例如,假设我有一个看起来像这样的 python 文件:

import re

from os import path

def x():
    v = re.compile(r"1")
    print(3, v)

def y(v=3):
    z = path.join("a", "b")
    thing = "a string"
    print(thing, z)

根据我配置的 iSort 和黑色设置,我的预提交脚本会将文件更改为如下所示:

import re
from os import path


def x():
    v = re.compile(r"1")
    print(3, v)


def y(v=3):
    z = path.join("a", "b")
    thing = "a string"
    print(thing, z)

不幸的是,在 git commit 编辑器中它仍然显示未修改的差异。有没有办法让编辑器有正确的输出?

从理论上讲,我想这并不重要,但很高兴看到差异实际上是什么。

4

1 回答 1

0

代替 pre-commit 钩子,尝试使用内容过滤器驱动程序,使用 smudge/clean 脚本可以:

  • 在结帐时使您的脚本成为一种方式
  • 在提交时(或在 git diff 上)以另一种方式制作你的脚本

在此处查看示例(用于清洁)此处

https://i.stack.imgur.com/tumAc.png
(图片来自“ Pro Git book ”中的“Customizing Git - Git Attributes”))

于 2019-02-08T05:35:51.723 回答