Как использовать pre-commit hook(пакетный файл Windows) для конкретной папки в SVN?
Я хочу создать хук предварительной фиксации в SVN (т. Е. BAT-файл для Windows), который проверяет наличие пустых сообщений в журнале. Более того, я хочу настроить эту проверку только для определенной папки в SVN.
Кто-нибудь может помочь относительно того же?
С уважением, Рухи Джайсвал
4 ответа
Если у вас все в порядке с TortoiseSVN, вы можете ввести здесь хук на стороне клиента.
TortoiseSVN передает следующие параметры хуку предварительной фиксации:
ПУТЬ ГЛУБИНЫ СООБЩЕНИЯ CWD
где интересный PATH
:
ДОРОЖКА
Путь к временному файлу, который содержит все пути, для которых была запущена операция. Каждый путь находится на отдельной строке во временном файле.
Итак, когда ваш хук вызывается (может быть на любом языке, между прочим), выполните следующие шаги:
- проверить содержание
MESSAGEFILE
, Если внутри есть комментарий, все в порядке, вернемся успешно из скрипта (я не помню, обозначен ли успех 0 или!0, просто попробуйте) - если
MESSAGEFILE
пусто, просмотрите файлPATH
и посмотрите, есть ли затронутые элементы в этом. Если это так, верните ошибку; в противном случае верните успех.
Я бы порекомендовал использовать свойство svn для этого, если вы используете Windows и используете TortoiseSVN.
tsvn: logminsize устанавливает минимальную длину сообщения журнала для фиксации. Если вы введете более короткое сообщение, чем указано здесь, фиксация будет отключена. Эта функция очень полезна для напоминания о необходимости предоставить правильное описательное сообщение для каждого коммита. Если это свойство не задано или значение равно нулю, допускаются пустые сообщения журнала.
Также не забудьте проверить другие функции, такие как интеграция с трекером ошибок.
Если вы действительно хотите сделать это на стороне сервера, используя ловушку, вы можете попробовать это, и в этом случае ваш вопрос является дубликатом:)
- Вы не можете иметь хуки, которые работают на событие только для некоторого поддерева
- Хуки - это обработчики событий для всего хранилища.
- Если вы хотите проверять только некоторые части затронутого репо, вы должны добавить логику внутри ловушечного кода
В дополнение к этому ответу Windows Pre-commit hook для длины комментария Subversion можно использовать svnlook dir-changed
проверить наличие определенных каталогов текущего коммита.
Так что вы можете добавить что-то вроде
svnlook dir-changed %REPOS% -t %TXN% | findstr your_path > nul
if %errorlevel% equ 0 exit 0
svnlook log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto err) else exit 0