Как я могу предотвратить коммиты Subversion без комментариев? - PullRequest
64 голосов
/ 18 декабря 2009

Кто-нибудь знает, как предотвратить коммиты в хранилище кода Subversion, когда не введен коммит коммит?

Ответы [ 6 ]

58 голосов
/ 18 декабря 2009

Вы можете использовать крючок (введите его в <repository>/hooks и назовите его 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

Источник: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/

19 голосов
/ 16 мая 2012

Вот ловушка перед фиксацией с подробным сообщением об ошибке @ miku для 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
18 голосов
/ 18 декабря 2009

На самом деле, когда вы создаете хранилище Subversion, его подкаталог hooks уже содержит примеры ловушек. Проверьте тот, который называется pre-commit.tmpl для деталей о параметрах ловушки. Он также содержит пример для хука, который вы ищете:

#!/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

Вы можете написать свой хук на любом скрипте или языке, если он исполняется на вашем компьютере Subversion.

6 голосов
/ 21 августа 2015

Если вы используете только TortoiseSVN, вы можете добавить свойство TortoiseSVN в корневой каталог: Название недвижимости: tsvn:logminsize значение: 1 Это отключит кнопку OK в окне фиксации TortoiseSVN, тогда Сообщение будет пустым. Помните, что это свойство относится только к TortoiseSVN и может не работать с другим клиентом SVN.

6 голосов
/ 18 декабря 2009

Создать хук перед фиксацией. Вот некоторые инструкции о том, как это сделать самостоятельно, или здесь - пример сценария перехвата, который отклоняет что-либо с сообщением о фиксации короче 10 символов.

5 голосов
/ 04 июля 2014

Linux-скрипт длиной более 15 символов -

#!/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

...