Настройка Git для пропуска хука перед фиксацией для определенных файлов


Отказ от ответственности: да, я прочитал пропустить обработчики фиксации Git и знаю о -n, но это не то, что я ищу.


У меня есть этот хук перед фиксацией, который запускается для того, чтобы сделать код более красивым (заменить вкладки пробелами, удалить двойные пустые строки,...).

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

Если бы я был единственным разработчиком, я бы устроился с флагом -n, чтобы предотвратить запуск хука, но есть и другие ребята, использующие интерфейсы, которые не знают флаг -n (кашель tortoisegit), и они не захотят указывать некоторые флаги для commit.

Помимо реализации пропуска непосредственно в хуке и очевидного способа -n: есть ли другие способы, как я могу предотвратить запуск хука перед фиксацией?


person eckes    schedule 31.03.2014    source источник
comment
Почему бы не реализовать это в хуке? Это сделало бы его более переносимым, и не полагалось бы на то, что каждый пользователь установил Git для размещения вашего не очень хорошо написанного хука.   -  person Biffen    schedule 31.03.2014


Ответы (1)


Следуя той же идее, что и этот хук перед фиксацией, вы можете использовать:

git diff --cached --name-only

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

Другими словами, хук по-прежнему выполняется при каждом коммите и для каждого файла.
Но его сценарий достаточно умен, чтобы применить тест к нужным файлам в списке файлов, которые нужно зафиксировать.

person VonC    schedule 31.03.2014