> -- Comdiv писал(а):
> CALL :CHECK type test.txtПонравилось, что просмотр файла прервётся как только будет найдена непустая строка (в моём предыдущем коде всегда весь файл просматривался целиком). Поэтому окончательный вариант у меня такой:## Код:
```
@echo off
set REPOS="%1"
set TXN="%2"
set TMPFILE=Log%RANDOM%.tmp

:: Make sure that the log message contains some text.
svnlook log -t %TXN% %REPOS% > %TMPFILE%
call :CheckBlank %TMPFILE%
set result=%errorlevel%
if %result% == 1 (
  echo Commits with empty log message are not allowed. >&2
)

del %TMPFILE% > NUL
exit %result%

:: Return 1 if %1 is a blank file, otherwise return 0
:CheckBlank
for /f "eol= " %%i in (%1) do exit /b 0
exit /b 1
```
Остановился на подходе с FOR потому, что вообще всё делается средствами интерпретатора CMD, без привлечения сторонних утилит.

Обращаю внимание на то, что без параметра "eol= " строки, начинающиеся с символа ";", считаются пустыми.

Данный файл именуется "pre-commit.bat" и помещается в каталог hooks любого репозитория Subversion, после чего попытка сделать коммит в данный репозиторий без описания (т.е. с пустым log message) прерывается с сообщением об ошибке "Commits with empty log message are not allowed." Помогает против случайного/преждевременного коммита и неопытных сотрудников.