Git-хук для обнаружения изменений файлов, содержащих определенную строку

Я хочу предупредить пользователя, если его код содержит определенную строку, и предупредить людей по электронной почте.

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

Я обновляю репозиторий на стороне сервера и запускаю что-то вроде git diff-tree -r --name-only --no-commit-id $2 | xargs grep foo для обнаружения плохой строки «foo».

Проблемы с этим подходом:

  • Мне не нравится поддерживать и полностью рабочую версию репозитория на стороне сервера
  • Он сканирует весь файл, а не только изменения. изменить Я решил эту проблему, заменив приведенное выше на: git show $2 | grep ^+ ...

Есть лучший способ сделать это?


person ty.    schedule 19.07.2012    source источник
comment
Git хранит файлы, а не diff. Таким образом, невозможно отсканировать только изменения.   -  person Alexandr Priymak    schedule 20.07.2012
comment
Конечно, вы можете получить diff. Я решил эту часть своей проблемы, просто используя git diff/git show.   -  person ty.    schedule 20.07.2012


Ответы (1)


Если вы используете gitolite V3 (или 'g3'), попробуйте поставить чек в VREF.

Для каждого рефлекса, начинающегося с VREF/FOO/ в правиле, которое применяется к этому пользователю, инициируется вызов программы с именем FOO (хранится в $LOCAL_CODE/VREF).
Обратите внимание, что программа даже не вызывается, если правило VREF не применяется к этому пользователю.

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

однако для этого по-прежнему требуется сначала обновить рабочий каталог (поскольку Gitolite по умолчанию управляет только голым репо)

person VonC    schedule 20.07.2012