How can I prevent Subversion commits without comments?

SvnHookCommit

Svn Problem Overview


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

Svn Solutions


Solution 1 - Svn

You can use a hook (put it into <repository>/hooks and name it pre-commit.bat (Windows)):

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

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/

Solution 2 - Svn

Here is a pre-commit hook with @miku's detailed error message for Linux:

#!/bin/sh

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
   grep "[a-zA-Z0-9]" > /dev/null

GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
	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
fi
exit 0

Solution 3 - Svn

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.

Solution 4 - Svn

If you are using TortoiseSVN only then you can add TortoiseSVN's property to the root directory: property name: tsvn:logminsize value: 1 This will disable OK button in TortoiseSVN commit window then Message is empty. Please be aware that this property is TortoiseSVN specific it might not work with other SVN client.

Solution 5 - Svn

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.

Solution 6 - Svn

Linux script for more than 15 characters--

#!/bin/bash
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
# Comments should have more than 5 characters
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep [a-zA-Z0-9] | wc -c)
if [ "$LOGMSG" -lt 15 ];
then
echo -e "Please provide a meaningful comment when committing changes." 1>&2
exit 1
fi

Source-http://java.dzone.com/articles/useful-subversion-pre-commit

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser234518View Question on Stackoverflow
Solution 1 - SvnmikuView Answer on Stackoverflow
Solution 2 - SvnpalacsintView Answer on Stackoverflow
Solution 3 - SvnEli AcherkanView Answer on Stackoverflow
Solution 4 - Svnuser7708View Answer on Stackoverflow
Solution 5 - SvnAmberView Answer on Stackoverflow
Solution 6 - SvnratrView Answer on Stackoverflow