Есть ли способ получить git commit --verbose для отображения обновленного diff при использовании хуков pre-commit?

Поэтому в настоящее время я настраиваю git pre-commit hook для связывания моих файлов python с помощью iSort и python Black, проблема, с которой я сталкиваюсь, заключается в том, что при использовании git commit --verbose diff, который отображается в редакторе коммитов, фактически не учитывает изменения в промежуточных файлах.

Например, допустим, у меня есть файл 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 и black, мой сценарий предварительной фиксации изменит файл таким образом:

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 он все еще показывает неизмененный diff. Есть ли какой-нибудь способ заставить редактор иметь правильный вывод?

Теоретически, я думаю, это не имеет значения, но было бы неплохо увидеть, какой будет разница в действительности.

1 ответ

Вместо ловушки перед фиксацией попробуйте вместо этого драйвер фильтра содержимого с помощью сценария smudge/clean, который может:

  • на кассе сделать свой сценарий в одну сторону
  • при коммите (или в git diff) сделайте ваш скрипт другим способом

Смотрите пример здесь или (для чистого) здесь


(изображение из "Настройки Git - атрибутов Git" из " Книги Pro Git ")

Другие вопросы по тегам