Подтвердить что ты не робот

Git крючки для хранения/извлечения метаданных

Одним из git неизбежных причуд является его невозможность хранить и извлекать метаданные о файле. Например, на макете метки хранятся с "расширенными атрибутами" (доступны с помощью xattr), и любая команда checkout/reset/merge/pull удаляет эти атрибуты, если на файл влияет проверка.

Я посмотрел, посмотрел, уже ли кто-то написал скрипты для сохранения метаданных, но я придумал сухую.

Итак, что я хотел бы сделать, это использовать git hook system для:

  • Прочитайте расширенные атрибуты, когда файлы зафиксированы,
  • Записывать атрибуты в файл, хранящийся в репозитории, который также передается,
  • Применить расширенные атрибуты к файлам, которые были изменены в файле слияния/проверки/ reset.

Какой из крючков я должен использовать? Являются ли post-receive и pre-commit все, что мне нужно? Может ли pre-commit добавить файл в фиксацию (т.е. После записи новых атрибутов)?

4b9b3361

Ответ 1

инструмент gibak использует pre-commit и post-checkout, чтобы его метаданные сохранения/восстановления метаданных ometastore (возможно, включая xattrs).

Вы не хотите post-receive. Он запускается на удаленном конце нажатий. Он работает для голых репозиториев, поэтому у него нет бизнеса, пытающегося обновить любые файлы из содержимого нажатой фиксации. Сделайте это в post-checkout, где вы знаете, что у вас будет рабочее дерево.

Ответ 2

metastore может сохранять и восстанавливать метаданные файлов, сохраняя их в отдельном файле (который вы можете включить в свои коммиты)