Вам необходимо реализовать eis script, который вы уже искали в pre-commit
hook.
Из документации, мы узнали, что перед фиксацией ловушки
не принимает никаких параметров, и вызывается до получения предлагаемого сообщения коммита и сделать коммит. Выход с ненулевым статусом из этого сценария приводит к тому, что команда git commit прерывается перед созданием фиксации.
В принципе, крючок вызывается, чтобы проверить, разрешено ли пользователю совершать его изменения.
Сценарий первоначально сделан eis на other post становится
#!/bin/bash
# File size limit is meant to be configured through 'hooks.filesizelimit' setting
filesizelimit=$(git config hooks.filesizelimit)
# If we haven't configured a file size limit, use default value of about 10M
if [ -z "$filesizelimit" ]; then
filesizelimit=10000000
fi
# You specify a warning limit
filesizewarning=500000
# With this command, we can find information about the file coming in that has biggest size
# We also normalize the line for excess whitespace
biggest_checkin_normalized=$(git ls-tree --full-tree -r -l HEAD | sort -k 4 -n -r | head -1 | sed 's/^ *//;s/ *$//;s/\s\{1,\}/ /g')
# Based on that, we can find what we are interested about
filesize=`echo $biggest_checkin_normalized | cut -d ' ' -f4,4`
# Actual comparison
# To cancel a push, we exit with status code 1
# It is also a good idea to print out some info about the cause of rejection
if [ $filesize -gt $filesizelimit ]; then
# To be more user-friendly, we also look up the name of the offending file
filename=`echo $biggest_checkin_normalized | cut -d ' ' -f5,5`
echo "Error: Too large push attempted." >&2
echo >&2
echo "File size limit is $filesizelimit, and you tried to push file named $filename of size $filesize." >&2
echo "Contact configuration team if you really need to do this." >&2
exit 1
elif [ $filesize -gt $filesizewarning ]; then
echo "WARNING ! A file size is bigger that $filesizewarning"
fi
exit 0
Возможный дубликат [Предельный размер файла в git repository] (http://stackoverflow.com/questions/7147699/limiting-file-size-in-git-repository) – bbodenmiller
@bbodenmiller Это не дубликат. Вы читали мой вопрос до конца? Я упомянул вопрос, указанный вами в последнем предложении. – yuval
@ user2476373, в то время как я понимаю ваше желание найти решение, которое проверяет размер файла, прежде чем нажимать, вы должны понимать, что это единственный способ __reliable__ для принудительного применения этого ограничения для нескольких людей. Крючок 'pre-commit' является __local__ hook и как таковой не распространяется вместе с репозиторием. На машине сослуживца этот крюк __ не будет существовать__. Возможно, вы захотите сделать __both__, локальный 'pre-commit'-hook и удаленный' update'-hook. –