How can I prevent Subversion commits without comme

2019-01-13 02:14发布

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

标签: svn hook commit
6条回答
乱世女痞
2楼-- · 2019-01-13 02:33

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.

查看更多
forever°为你锁心
3楼-- · 2019-01-13 02:39

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.

查看更多
仙女界的扛把子
4楼-- · 2019-01-13 02:40

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.

查看更多
唯我独甜
5楼-- · 2019-01-13 02:44

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

查看更多
兄弟一词,经得起流年.
6楼-- · 2019-01-13 02:47

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/

查看更多
\"骚年 ilove
7楼-- · 2019-01-13 02:48

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
查看更多
登录 后发表回答