Одной из неизбежных особенностей git является его неспособность хранить и извлекать метаданные о файле. Например, на Mac метки хранятся с «расширенными атрибутами» (доступны с помощью xattr
), и любая команда извлечения/сброса/объединения/вытягивания удалит эти атрибуты, если на файл влияет проверка.
Я осмотрелся, чтобы узнать, не написал ли кто-нибудь уже сценарии для сохранения метаданных, но ничего не вышло.
Итак, что я хотел бы сделать, это использовать систему ловушек Git для:
- Чтение расширенных атрибутов при фиксации файлов,
- Запишите атрибуты в файл, хранящийся в репозитории, который также фиксируется,
- Примените расширенные атрибуты к файлам, которые были изменены при слиянии/извлечении/сбросе.
Какой из крючков я должен использовать? post-receive
и pre-commit
все, что мне нужно? Может ли pre-commit
также добавить файл в коммит (т.е. после записи новых атрибутов)?
post-merge
выполнять ту же работу, что иpost-checkout
, чтобы восстановить любые метаданные, которые были потеряны при перезаписи файлов слиянием. Однако слияние метаданных может быть сложным, в зависимости от того, как выбранные вами инструменты сохраняют их и делают доступными для просмотра/различия. 17.03.2010