tags:

views:

427

answers:

3

Hi,

Does anybody know how to prevent commits to a Subversion code repository when there is no commit comment entered?

Thanks in advance.

Kind regards, Maverick

+2  A: 

Create a pre-commit hook. Here's some instructions on how to do so yourself, or here is an example hook script that will reject anything with a commit message shorter than 10 characters.

Amber
+7  A: 

You can use a hook (put it into <repository>/hooks):

@echo off
::
:: Stops commits that have empty log messages.
::

@echo off

setlocal

rem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2

rem check for an empty log message
svnlook log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto err) else exit 0

:err
echo. 1>&2
echo Your commit has been blocked because you didn't give any log message 1>&2
echo Please write a log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1

src: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/

The MYYN
+1, though of course this can't force users to use meaningful comments. svn commit -m "foo" foo.h would still work.
Glen
+2  A: 

Actually, when you create a Subversion repository, its hooks subdirectory already contains hook samples. Check out the one called pre-commit.tmpl for details on the hook's parameters. It also contains an example for a hook that you're looking for:

#!/bin/sh
REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/local/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
   grep "[a-zA-Z0-9]" > /dev/null || exit 1

You can write your hook in any script or language, as long as it's executable on your Subversion machine.

Eli Acherkan