SVN хуки для Windows - PullRequest
       14

SVN хуки для Windows

35 голосов
/ 11 марта 2009

Я немного погуглил и обнаружил, что на самом деле нет ресурса SVN-хуков для Windows. Поэтому я решил, что я бы начал здесь вики, чтобы централизовать его.

Если вы вносите свой вклад, обязательно укажите:

  1. Наименование крючка
  2. Что делает скрипт
  3. Фактический сценарий

ПРИМЕЧАНИЕ. Я подозреваю, что публикация эпического сценария будет бесполезной.

Ответы [ 9 ]

11 голосов
/ 11 марта 2009

Запрет коммитов с пустыми комментариями

  1. перед фиксацией
  2. запрещает коммиты с пустым комментарием

Источник:

"c:\Program Files\Subversion\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
exit 0
8 голосов
/ 11 марта 2009

Предотвращает изменения в реквизитах ревизий, кроме svn :: log

  1. до revprop-change.bat
  2. Запрещает редактирование свойств ревизии, кроме svn :: log

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1
6 голосов
/ 04 марта 2010

* ОБНОВЛЕНИЕ: это больше не работает, поскольку Twitter отказался от аутентификации имени пользователя и пароля в пользу OAuth. *

Публикует информацию о коммите в Twitter

  1. Имя хука = пост-фиксация
  2. Что делает скрипт = публикует ревизию, автора и коммит в Твиттере

Замечания по использованию:

  • Замените twitterUsername и twitterPassword на ваш текущий Twitter
  • Это проверено на VisualSVN, и единственный способ заставить его работать - это сбросить все в жестко заданный путь, c: \ hook \ post-commit . Вы можете изменить это на любой путь, к которому у VisualSVN есть доступ для чтения / записи.
  • Требуется установить Wget. Установщик можно скачать здесь
  • Комментарии и улучшения приветствуются. Это мой первый SVN-хук на Windows, и мой GAWD - это боль.

Фактический скрипт

echo status= > c:\hook\post-commit\msg.txt
echo Rev#%2 by >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %2 %1 >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" log -r %2 %1 >> c:\hook\post-commit\msg.txt
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" --user=twitterUsername --password=twitterPassword --post-file=c:\hook\post-commit\msg.txt --append-output=c:\hook\post-commit\log.txt --output-document=c:\hook\post-commit\download.txt --delete-after http://twitter.com/statuses/update.xml
4 голосов
/ 09 декабря 2011

Мне нравится использовать subHooker, который написан на Java. Он обеспечивает функциональность до и после фиксации фиксации.

Предварительная фиксация:

  • Обеспечивает соблюдение требования к сообщению фиксации, либо минимальной длины, либо обоих (или нет)
  • Может применять требования к выражению RegEX в сообщении фиксации, хорошо для того, чтобы требовать регистрационный номер или номер дефекта (или нет)

Сообщение коммит:

  • Отправка сообщений электронной почты в формате HTML или обычного текста.
    • Как обычные, так и html-сообщения используют систему шаблонов
    • Может включать и выключать diff
    • Может включить или отключить изменение
  • поддерживает локализацию
  • поддерживает стандартизированное ведение журнала.

Вы можете найти его в коде Google @ http://code.google.com/p/subhooker/

Это бесплатно, и да, я автор, уже несколько лет работаю с Subversion, мне это очень нравится, поэтому я возвращаю это сообществу.

4 голосов
/ 20 октября 2009

Проверяет обычные "ленивые" сообщения о фиксации

  1. Имя хука = pre-commit
  2. Что делает скрипт = Проверить наличие пустой строки или '.' линия. Также проверьте файл слов, которые не могут быть единственным комментарием.

Фактический сценарий

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 Check if comment is in list of reserved words to not be used..

"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 Check that the author of this commit has the rights to perform
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

Пример файла исключенных слов: обновленный обновленный обновлено. Обновлено. исправлять фиксировать Фикс. исправить. .. , ... , , , , отсортированный отсортирован. отсортированный Сорт.

и т. Д. И т. Д. И т. Д.

3 голосов
/ 04 июня 2009

Запретить изменения в реквизитах ревизий, кроме svn :: log

  1. до revprop-change.bat
  2. Запрещает редактирование свойств ревизии, кроме svn :: log (альтернативная версия)

Источник:

rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
3 голосов
/ 11 марта 2009

Для разработчиков .NET, использующих Subversion в Windows, Фил Хаак написал о CaptainHook .

CaptainHook - простой плагин рамки для написания хуков Subversion используя .NET

Проект размещен на Source Forge

1 голос
/ 04 июля 2016

Этот хук предотвращает коммиты в определенную ветку

( ответвление-16E в данном случае):

setlocal

rem Subversion sends through the path to the repository and transaction id  
set REPOS=%1
set TXN=%2

rem Committing to a branch is not allowed
svnlook changed -t %TXN% %REPOS% | findstr "\/branch-16E"
if %errorlevel% EQU 0 goto errb else exit 0

:errb
echo. 1>&2
echo This branch was closed. If you want to commit here contact your administrator. 1>&2
exit 1
1 голос
/ 19 марта 2009

Я запустил хранилище хуков, используя C #. Моя первая ловушка была для отправки уведомлений о проверке в канал RSS: SubversionRss В настоящее время я работаю над одной ловушкой после фиксации для отправки уведомлений о проверке в канал Twitter.

...