Распространенные типы крюков Subversion

Какие виды скриптов используются людьми для Subversion? Просто общие идеи, но код тоже был бы великолепен!

8.08.2008 17:08:51
16 ОТВЕТОВ

Я думаю, что наиболее распространенным из них является предоставление людям возможности изменять комментарии к редакции после коммитов

Вам нужно включить скрипт ловушки pre-revprop-change, чтобы разрешить это. Приведенный пример, если включен, позволяет редактировать только свойство комментария и быть только оригинальным комиттером. Отлично подходит для исправления опечаток.

0
8.08.2008 17:15:26

На моем рабочем месте мы установили хук пост-фиксации, который генерирует RSS-каналы, которые отображаются на различных панелях мониторинга и используются для рецензентов кода, чтобы знать, когда пора рецензировать, и для нас, чтобы увидеть, что новые сотрудники совершают достаточно ,

3
8.08.2008 19:30:58

Я использую перехваты после коммита ( я думаю, что это один ), чтобы публиковать сообщения на форуме по Basecamp для каждого коммита. Два преимущества:

  1. Как ведущий разработчик, я получаю сводку коммитов каждое утро (через RSS-канал с этого форума basecamp) и могу довольно быстро увидеть, чем занималась моя команда.

  2. Наша установка Trac / SVN находится за нашим брандмауэром, поэтому это дает моим руководителям в других местах представление о том, что мы делаем. Они могут не понимать этого, но для менеджера большая активность выглядит, ну, как много активности;)

Я думаю, конечный результат этого похож на то, что делает @Aviv.

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

1
13.08.2008 04:37:35

Хук, чтобы уведомить систему управления ошибками / проблемами об изменениях в репозитории. То есть. сообщение коммита имеет ошибку: 546 или похожий тег, который анализируется и подается в систему управления ошибками.

0
13.08.2008 07:16:35

Мы проверяем следующее с помощью наших скриптов ловушек:

  • Что было передано сообщение журнала фиксации
  • Что рецензент был указан для коммита
  • Отсутствие автоматически сгенерированного кода или запрещенных типов файлов в хранилище.
  • Отправить электронное письмо при создании ветки / тега

Мы все еще хотим реализовать следующее:

  • Отправить электронное письмо, когда пользователь получает блокировку файла
  • Отправить письмо, когда ваш замок был украден
  • Отправить всем по электронной почте, когда свойство ревизии было изменено
0
25.08.2008 21:59:57

Несколько вещей, которые мы используем для них:

  • интеграция с трекером ошибок ( в нашем случае Trac - сообщение коммита «Closes # 514» автоматически помечает эту ошибку как закрытую)
  • интеграция с интеграцией сборки ( в нашем случае buildbot - фиксация наблюдаемой ветви запускает сборку
  • хук pre-commit для проверки коммита - мы используем svnchecker . Это подтверждает наш код Python для правильности PEP8
  • отправка сообщений о регистрации в список рассылки
  • запуск скриптов отступа
3
26.08.2008 23:49:14

Мы используем FogBugz для отслеживания ошибок, он предоставляет скрипты фиксации Subversion, которые позволяют вам включить номер дела в ваш чек в комментариях, а затем связывают ошибку с проверкой, в которой это исправлено. Для этого требуется, чтобы экземпляр WebSVN был настроен так, чтобы у вас был веб-просмотрщик для вашего хранилища.

5
10.10.2008 14:36:29

Мы используем скрипт commit hook для запуска нашего релиз-робота. Запись новой информации о выпуске в файл с именем changes.txt в наших различных продуктах приведет к созданию тега и соответствующих артефактов.

0
4.09.2008 21:02:23

У меня есть одна установка с использованием библиотеки Ruby Tinder, которую я отправляю в комнату для разведения костра, если кому-то нужен сценарий, который я могу опубликовать или отправить вам код.

Другие распространенные сообщения, которые я видел, - это сообщения о системах отслеживания ошибок и уведомления по электронной почте.

0
4.09.2008 21:20:06

Если у вас есть смесь пользователей Unix и Windows, работающих с хранилищем, я призываю вас использовать сценарий предварительной фиксации case-insensitive.py в качестве меры предосторожности. Это предотвращает сложные ситуации, когда обновления svn не удаются для пользователей Windows из-за переименования файла, которое только изменило регистр имени файла . Поверьте, есть большая вероятность, что это избавит вас от неприятностей.

8
30.07.2011 09:33:34
Я не понимаю, почему это все еще проблема. Windows XP и выше, с определенным изменением реестра, могут иметь чувствительность к регистру. Это просто клиентские утилиты, такие как TortoiseSVN, которые не поддерживают его. Должна быть опция установщика для установки этого реестра при установке этих клиентских утилит svn.
TamusJRoyce 27.07.2011 14:20:45

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

1
10.09.2008 11:27:16

Я использую pre-revprop-changeловушку, которая позволяет мне возвращаться и редактировать комментарии и такую ​​информацию после выполнения коммита. Это очень полезно, если в комментариях к коммиту отсутствует / ошибочная информация.

Здесь я размещаю pre-revprop-change.batкомандный файл для Windows NT или более поздней версии. Вы, безусловно, можете улучшить его с помощью дополнительных модификаций Вы также можете извлечь post-revprop-change.cmdиз него резервную копию старого snv:logили просто добавить его в новый журнал.

Единственная сложность была в том, чтобы иметь возможность фактически разобрать stdin из командного файла. Это делается здесь с помощью FIND.EXEкоманды.

Другое дело, что у меня были сообщения от других пользователей о проблемах с использованием команды /bwith exit. Вам может просто понадобиться удалить это /bв вашем конкретном приложении, если случаи ошибок не ведут себя хорошо.

@ECHO OFF

set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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 properties are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log revision properties 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 
65
29.01.2020 13:54:58
На самом деле я перегруппирую все свои хуки в учетную запись github, чтобы со временем ее можно было улучшить github.com/philibertperusse/subversion-hooks
Philibert Perusse 8.03.2012 21:39:26
Вместо того, чтобы разрешить любое непустое сообщение журнала, как сделать так, чтобы отредактированное сообщение журнала имело как минимум количество символов, например 10 символов?
alondono 18.11.2014 02:57:35

Хук предварительной фиксации Windows, чтобы проверить, что журнал содержит что-то

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set txn=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set svnlookparam="%repos%" -t %txn%

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
set bIsEmpty=true
for /f "tokens=* usebackq" %%g in (`svnlook log %svnlookparam%`) do (
   set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY

echo Allowed. >&2

goto :END


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

:ERROR_EXIT
:: You may require to remove the /b below if your hook is called directly by subversion
exit /b 1

:END
endlocal
0
2.09.2010 19:04:06

ловушка post-commit для отправки уведомления по электронной почте о том, что что-то изменилось в хранилище, в список писем. Вам нужен sendmail.exe в той же папке, что и файл хука, вместе с sendmail.ini.

Вам также нужен файл post-commit.tos.txt рядом с вашим post-commit.cmd для составления списка получателей почты. Файл должен содержать:

user1@example.com,user2@example.com,user3@example.com

Вот код хука:

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set rev=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set tos=%repos%\hooks\%~n0.tos.txt
set reposname=%~nx1
set svnlookparam="%repos%" --revision %rev%

if not exist "%tos%" goto :END

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare sendmail email file
set author=
for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
  set author=%%g
)

for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
  set EmailNotificationTo=%%g
)
set SendMailFile=%~n0_%reposname%_%rev%.sm

echo To: %EmailNotificationTo% >> "%SendMailFile%"
echo From: %reposname%.svn.technologie@gsmprjct.com >> "%SendMailFile%"
echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification  >> "%SendMailFile%"

echo --- log [%author%] --- >> "%SendMailFile%"
svnlook log %svnlookparam% >> "%SendMailFile%" 2>&1
echo --- changed --- >> "%SendMailFile%"
svnlook changed %svnlookparam% --copy-info >> "%SendMailFile%" 2>&1

echo .>> "%SendMailFile%"

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Send email
type "%SendMailFile%" | "%~dp0sendmail.exe" -t

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Clean-up
if exist "%SendMailFile%" del "%SendMailFile%"


:END
endlocal
1
2.09.2010 19:31:59

Я забыл ввести комментарий при совершении. У меня не было времени выяснить, почему мой хук pre-revprop-change не работал. Поэтому следующая команда svnadmin сработала для ввода сообщения коммита: svnadmin setlog <filesystem path to my repository> --bypass-hooks -r 117 junkгде «мусор» - это файл, содержащий текст, который я хотел бы использовать в качестве комментария. svn setlog helpимеет больше информации об использовании ...

0
5.09.2011 03:06:06

Для тех, кто ищет pre-revprop-change.bat для операции snvsync :

https://gist.github.com/1679659

@ECHO OFF

set user=%3

if /I '%user%'=='syncuser' goto ERROR_REV

exit 0

:ERROR_REV echo "Only the syncuser user may change revision properties" >&2
exit 1

Это просто отсюда: http://chestofbooks.com/computers/revision-control/subversion-svn/Repository-Replication-Reposadmin-Maint-Replication.html и адаптировано для Windows.

3
25.01.2012 23:44:23