2017-01-24 12 views
1

Можно ли написать крюк pre-receive на стороне сервера, чтобы предотвратить добавление больших или двоичных файлов в репозиторий через коммиты?git lfs pre-receive hooks для предотвращения нежелательных файлов в репозитории

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

git lfs track "*.zip" 

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

ГИТ-p4 даже позволяет мне файл пороги размера, как:

largeFileCompressedThreshold = 1m 
    largeFileThreshold = 50m 

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

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

ответ

0

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

+0

Как вы понимаете, что файл отслеживается через LSF? С проверкой размера файла это кажется выполнимым: если файл отслеживается через LSF, файл в git является только ссылкой и будет небольшим. Но как это работает для проверки типа файла? Может ли CheckFile определить, действительно ли файл является ссылкой git-lfs? Это уже приближает меня - возможно, для этого можно добавить еще несколько проверок. – user2144067

+0

githooks.checkfile.sizelimit проверяет фактический файл (а не тип файла). Если вы хотите протестировать Git-Hooks, просто следуйте руководству по адресу http://search.cpan.org/~gnustavo/Git-Hooks/lib/Git/Hooks/TUTORIAL.pod. –