Кто-нибудь знает, как предотвратить коммит в репозиторий кода Subversion, когда не введен комментарий коммита?
Как я могу запретить Subversion совершать без комментариев?
Ответ 1
Вы можете использовать крючок (поместите его в <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
src: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/
Ответ 2
Вот крюк pre-commit с подробным сообщением об ошибке @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
Ответ 3
На самом деле, когда вы создаете репозиторий 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
Вы можете написать свой крючок на любом script или языке, если он будет исполняться на вашей машине Subversion.
Ответ 4
Создайте крюк предварительной фиксации. Здесь несколько инструкций о том, как сделать это самостоятельно, или здесь является примером hook script, который отклонит что-либо с сообщением фиксации короче 10 символов.
Ответ 5
Linux script для более чем 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
Источник- http://java.dzone.com/articles/useful-subversion-pre-commit
Ответ 6
Если вы используете TortoiseSVN, то вы можете добавить свойство TortoiseSVN в корневой каталог:
имя свойства: tsvn:logminsize
значение: 1
Это отключит кнопку ОК в окне фиксации TortoiseSVN, тогда сообщение будет пустым.
Помните, что это свойство TortoiseSVN, которое может не работать с другим клиентом SVN.