git lfs pre-receive ловушки для предотвращения нежелательных файлов в репозитории

Можно ли написать хук предварительного получения на стороне сервера, чтобы предотвратить добавление больших или двоичных файлов в репозиторий через коммиты?

Локально я могу контролировать поведение git-lfs, добавляя типы файлов в файл .gitattribute через:

    git lfs track "*.zip"

Это приведет к тому, что если будет добавлен новый zip-файл, он будет управляться git-lfs и не будет зафиксирован в хранилище объектов git.

git-p4 даже позволяет мне устанавливать пороговые значения размера файла, например:

    largeFileCompressedThreshold = 1m
    largeFileThreshold = 50m

С несколькими разработчиками и средами разработки может случиться так, что такой двоичный файл будет добавлен без настройки git-lfs, поэтому такой файл может быть отправлен в git напрямую. Мне нужен хук на стороне сервера, который отклоняет такую ​​фиксацию и выдает значимое сообщение, чтобы разработчик мог легко определить проблему.

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


person user2144067    schedule 24.01.2017    source источник


Ответы (1)


Этого можно добиться с помощью директивы sizelimit файла CheckFile из фреймворка Git-Hooks. Мы используем его, и он работает очень хорошо.

person Marcelo Ávila de Oliveira    schedule 24.01.2017
comment
Как вы понимаете, что файл затем отслеживается через LSF? С проверкой размера файла это кажется возможным: если файл отслеживается через LSF, файл в git является только ссылкой и будет маленьким. Но как это будет работать для проверки типа файла? Может ли CheckFile определить, действительно ли файл является ссылкой на git-lfs? Это меня уже сближает — возможно, для этого можно добавить еще несколько проверок. - person user2144067; 24.01.2017
comment
Githooks.checkfile.sizelimit проверяет фактический файл (а не тип файла). Если вы хотите протестировать Git-Hooks, просто следуйте инструкциям по адресу search.cpan.org/~gnustavo/Git-Hooks/lib/Git/Hooks/TUTORIAL.pod. - person Marcelo Ávila de Oliveira; 24.01.2017