Всем привет!
Есть pre-commit hook скрипт на sh для subversion. Среди прочего, скрипт должен запрещать коммит файлов больше определённого размера. Дело в том, что даже при выполнении условия соотношения размеров и прохождения по ветке if-then скрипт не выполняет
exit 1 и не выводит сообщение
echo.
С помощью разных
echo было выяснено, что скрипт точно получает и верно интерпретирует значения всех переменных, а так же проводит сравнение. Если прописать какое-нибудь эхо перед строкой
echo "File '$file' too large to commit" >&2
и после
exit 1 -- они выполнятся.
В конечном итоге коммитится файл любого размера, не смотря на то, что скрипт верно проводит сравнение и идёт по ветке с
exit 1.
Ещё в этом скрипте есть часть с проверкой на расширения (здесь не приведена), там
exit 1 нормально выполняется.
В общем, какие-то странности.
Буду благодарен за любые советы.
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK="/usr/local/bin/svnlook"
maxsize=20000000 #ограничение на максимальный размер файла (не коммита целиком) в байтах
$SVNLOOK changed -t $TXN $REPOS | while read status file
do
[[ $status == "D" ]] && continue # Skip Deletions
[[ $file == */ ]] && continue # Skip directories
size=$($SVNLOOK filesize -t $TXN $REPOS $file)
if [ $size -gt $maxsize ]
then
echo "File '$file' too large to commit" >&2
exit 1
fi
done
exit 0