Для перехвата перед фиксацией, который изменяет промежуточные файлы, мне нужно выяснить, что нужно ставить после запуска перехвата.
Хук перед фиксацией применяет красивую печать файловэто должно быть совершено.Хук выполняет следующие задачи:
- заменяет табуляцию пробелами
- удаляет завершающие пробелы в конце строк
- убирает двойные пустые строки *)
- , если отсутствует, добавить пустую строку в конец файла *)
Действия, отмеченные *) - это те, которые вызывают проблему, описанную ниже.
После того, как это будет сделано, хук добавляет измененные файлы в индекс с помощью git add $filename
.Таким образом, весь файл становится подготовленным, и я больше не могу фиксировать только небольшие части (то есть фрагменты) измененного файла.
Конечно, я мог бы git add --no-verify
и обойти ловушку, но этоопция недоступна при использовании git gui
.Кроме того, я хочу , чтобы применить симпатичную печать на поэтапных строках файла, поэтому обход крючка не является моей целью.
Есть ли способ выяснить, что должнобыть добавленным в индекс после применения симпатичной печати, чтобы я мог ставить содержимое right после запуска хука вместо того, чтобы ставить весь файл?
Edit 1:
Хотя ответ , предоставленный David Brigada выглядит многообещающе, он не работает: git stash --keep-index
оставляет инсценированные изменения без изменений (это хорошочасть), но (по крайней мере, в msysgit) он помещает все изменений в тайник (не только неустановленные).Это приводит к конфликтам слияния при возврате тайника обратно в WC, потому что поэтапные строки могут быть изменены.
Edit 2:
Также обновленный ответ David не приводит к успеху, поскольку git отказывается сливать тайник в грязный туалет.
Редактировать 3:
Ответ от larsks указывает мне на использование .gitattributes
.На первый взгляд, это кажется правильным, но я нахожу довольно запутанным, что проверенная версия была пропущена через фильтр и WC отличается от зарегистрированной версии.По крайней мере, это был мой опыт, и это подтверждается следующим замечанием в Git Book :
Если вы фиксируете эти изменения и извлекаете файл снова, вы видитеправильно подставлено ключевое слово
Мне нужно удалить файл и затем проверить его еще раз , чтобы увидеть изменения, которые были применены фильтром?Ни за что!Есть еще подсказки?