Подтвердить что ты не робот

SVN для Windows

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

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

  • Имя крюка
  • Что делает script
  • Фактический script

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

4b9b3361

Ответ 1

Предотвращение коммиттов с пустыми комментариями

  • перед фиксацией
  • предотвращает коммит с пустым комментарием

Источник:

"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

Ответ 2

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

  • предварительно revprop-change.bat
  • Предотвращает изменения свойств ревизии, отличных от 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

Ответ 3

* UPDATE: это больше не работает, поскольку Twitter устарел на аутентификацию имени пользователя и пароля в пользу OAuth. *

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

  • Имя hook = post-commit
  • Что script делает = публикует сообщение для проверки, автора и фиксации в Twitter

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

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

Фактический script

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

Проверяет наличие общих сообщений "lazy" commit

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

Фактический script

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

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

и т.д. и т.д. и т.д.

Ответ 5

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

Pre commit:

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

Сообщение:

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

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

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

Ответ 6

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

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

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

Ответ 7

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

  • предварительно revprop-change.bat
  • Предотвращает изменения свойств ревизии, отличных от 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

Ответ 8

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

Ответ 9

Этот крючок предотвращает фиксацию определенной ветки

(ветвь-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