Hi,
First, I would advise against using temporary files as you did.. If you
cannot make sure the temp filename is unique, you may endup with conflicting
operations... It would be better to pipe the output of SVNLOOK directly into
GREP:
%SVNLOOK$ log -t %TXN% %REPOS% | %GREP% -qF "^$" temp
Now, regarding your problem there... I would suggest you the following
avenues of investigation:
- try out manually the grep command and check the errorlevel output.. I
would think that the result would always be 0!
- I personnaly avoid using the 'if errorlevel N' statement. I often had
problems with it I cannot explain. I personnally use a statement like:
if '%errorlevel%'=='1'
- Use the /b on exit statement: exit /b 0
Finally, here is the pre-commit hook I am using. It is working fine! One of
the 'tricky' part is the for loop behavior!
- Empty lines would be automatically skipped and the DO part would not be
executed... So, if the log is totally empty the DO is never executed.
- If anything is present, the DO part is executed and bIsEmpty is set to
false.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
@ECHO OFF
set repos=%1
set txn=%2
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: If the commit log is empty the for loop will not even run...
set bIsEmpty=true
for /f "tokens=*" %%g in ('svnlook log %repos% --transaction %txn%') do (
set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty commit logs are not allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
philibert
-----Message d'origine-----
De : news [mailto:news@sea.gmane.org] De la part de Gustavo Guerra
Envoyé : 4 mars 2006 17:20
À : users@subversion.tigris.org
Objet : Checking for empty messages on pre-commit hook on windows
Greetings,
If tried this as pre-commit-hook.bat:
set REPOS=%1
set TXN=%2
set SVNLOOK="c:\program files\subversion\bin\svnlook.exe"
set GREP="c:\program files\gnuwin32\bin\grep.exe"
%SVNLOOK$ log -t %TXN% %REPOS% > temp
%GREP% -qF "^$" temp
if errorlevel 1 goto OK
echo Empty messages are not allowed 1>&2
exit 1
:OK
exit 0
But it doesn't work, commit is always allowed. Can anyone help?
Regards,
Gustavo Guerra
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Sat Mar 4 23:55:17 2006