Ключ предварительной фиксации Windows для длины комментария Subversion
Кажется, я ничего не получаю от этого. Либо поиск в Интернете для script, и т.д. Любой получил script, который можно просто отредактировать готовым pre-commit.tmpl в среде Windows, для которой требуется ввести символы x для комментария совершить в Tortoise Subversion глобально, чтобы все члены команды были необходимы, тогда как это требование было отброшено до клиентов с сервера SVN?
Я не знаю языка сценариев, и это должно быть что-то довольно простеньким без меня, чтобы найти время, чтобы понять скрипты в течение следующих 3 часов.
Ответы
Ответ 1
Это файл .bat, требующий наличия комментария. Он проверяет наличие в комментарии хотя бы одного символа.
@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
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 enter a comment. 1>&2
echo Write a log message describing the changes made and try again. 1>&2
echo Thanks 1>&2
exit 1
Этот файл находится в папке /hooks в репозитории с именем pre-commit.bat. Если вам нужно минимальное количество символов, строка для изменения -
svnlook log %REPOS% -t %TXN% | findstr . > nul
Итак, если вам нужно не менее 10 символов, вам нужно иметь 10. а не только один
svnlook log %REPOS% -t %TXN% | findstr .......... > nul
Подробнее расширенные опции для команды findstr позволят вам выполнять более удобные проверки (определенные наборы символов, ect)
Ответ 2
Я использую SubversionNotify, он, вероятно, делает больше, чем вам нужно, но довольно просто настроить.
Ответ 3
Попробуйте следующее:
rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2
"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo Your commit has been blocked because you didn't provide a 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
:OK
rem -------------------------------------------------------------
rem Check if comment is in list of reserved words to not be used..
rem -------------------------------------------------------------
"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment
setlocal enabledelayedexpansion
Set SEPARATOR=
set COMMENT=
for /f "delims=" %%a in (comment) do (
set currentline=%%a
set COMMENT=!COMMENT!%SEPARATOR%!currentline!
)
FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null
If %ERRORLEVEL% EQU 1 goto OK2
:Fail
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2
echo Line is -%COMMENT%- 1>&2
echo Please write a proper log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1
:OK2
rem -------------------------------------------------------------
rem Check number of words on the line if = 2 then reject comment
rem -------------------------------------------------------------
Set VAR1=%COMMENT%
Set count=0
For %%j in (%VAR1%) Do Set /A count+=1
IF %count% EQU 2 goto Fail2
goto OK3
:Fail2
echo Your commit has been blocked because not enough detail supplied 1>&2
echo Please write a longer log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2
exit 1
:OK3
rem -------------------------------------------------------------
rem Check that the author of this commit has the rights to perform
rem -------------------------------------------------------------
rem the commit on the files and directories being modified.
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
rem All checks passed, so allow the commit.
exit 0
Ответ 4
У меня есть pre-commit hook, который может делать именно то, что вы хотите. Плюс намного больше.
Он также позволяет выполнять следующие действия:
- Установить различные права фиксации для определенных файлов или каталогов:
- чтение-запись. Пользователь может проверить и зафиксировать эти элементы.
- только для чтения. Пользователь может проверить этот элемент, но не может зафиксировать изменения.
- add-only. Пользователь может добавить каталог через
svn cp
, но не вносить никаких изменений. Это идеально подходит для каталога /tags
, где вам разрешено создавать теги, но не изменять тег.
- no-delete. Пользователи могут фиксировать изменения и добавлять новые файлы, но не удалять эти файлы.
- no-add. Пользователи могут только фиксировать изменения, а не добавлять или удалять файлы в фиксации.
И это также позволяет вам сделать это:
- Запретить определенные имена файлов с помощью регулярных выражений globbing,
- Требовать, чтобы определенные файлы или каталоги имели определенное свойство, заданное для определенного значения. Очень полезно для таких вещей, как убедиться, что сценарии оболочки Unix, файлы Unix Makefile и файлы Windows Batch имеют правильное завершение строки или установлено значение
svn:ignore
, поэтому пользователи не случайно фиксируют файлы, которые они не должны совершать.
- Требовать, чтобы определенные свойства ревизий были установлены с определенными значениями. Вот как вы проверяете сообщения фиксации, но заявляете, что
svn:log
должен соответствовать определенным регулярным выражениям.
Этот pre-commit script написан на Perl. По умолчанию Perl поставляется с серверами Unix, Mac и Linux. К сожалению, он не включен на компьютеры Windows. К счастью, есть несколько открытых, бесплатных и простых в установке пакетов Perl для ПК, таких как ActivePerl и Strawberry Perl