svnlook cat:: batch скрипт для ограничения размера коммита до 10МБ

Я работаю над созданием сценария ловушки перед фиксацией, который ограничит пользователей (разработчиков) до 10 МБ. Так что это поможет уменьшить размер хранилища. Ниже приведен скрипт, который необходимо запустить на сервере Windows с использованием Subversion 1.8.

@echo off  
setlocal 

@CD C:\Progra~2\VISUAL~1\bin
Set REPOS=%1
Set TXN=%2
Set MAX_SIZE=10485760
svnlook cat %REPOS% -t %TXN% | Set size=%%~ZA
If %%size%% GEQ %%MAX_SIZE%% (goto err) else exit 0
:err  echo. 1>&2  
echo Your commit has been blocked because your commit size is greater than    10MB 1>&2  
echo Please reduce your commit file size to below 10MB and try again 1>&2
echo Thanks 1>&2
exit 1

Ошибка при получении: Не удалось выполнить фиксацию (подробности приведены ниже): фиксация заблокирована ловушкой перед фиксацией (код выхода 1) с выводом: svnlook: E205001: попробуйте 'svnlook help' для получения дополнительной информации svnlook: E205001: Отсутствует аргумент пути к репозиторию

Если кто-нибудь может помочь по этому сценарию. Спасибо!

1 ответ

Решение
  1. С svnlook cat вы можете выводить только отдельные файлы
  2. Чтобы получить размер любого файла в транзакции, вы должны использовать другую подкоманду: filesize
  3. filesize работает на основе файлов, вы должны передать в xargs (или это Win-замена) список файлов в транзакции с changed субкоманда
Другие вопросы по тегам