Как использовать pre-commit hook (пакетный файл Windows) для определенной папки в SVN? - PullRequest
1 голос
/ 02 марта 2012

Я хочу создать хук предварительной фиксации в SVN (т. Е. BAT-файл для Windows), который проверяет наличие пустых сообщений в журнале.Более того, я хочу настроить эту проверку только для определенной папки в SVN.

Может ли кто-нибудь помочь с тем же?

С уважением, Рухи Джайсвал

Ответы [ 4 ]

1 голос
/ 02 марта 2012

Я бы порекомендовал использовать для этого свойство svn, если вы используете Windows и используете TortoiseSVN.

tsvn: logminsize устанавливает минимальную длину сообщения журнала для фиксации. Если вы введете более короткое сообщение, чем указано здесь, фиксация будет отключен. Эта функция очень полезна для напоминания о необходимости правильное описательное сообщение для каждого коммита. Если это свойство не установлено, или значение равно нулю, пустые сообщения журнала разрешены.

Также обязательно ознакомьтесь с другими функциями , такими как интеграция с системой отслеживания ошибок.

Если вы действительно хотите сделать это на стороне сервера, используя ловушку, вы можете попробовать this , и в этом случае ваш вопрос является дубликатом:)

0 голосов
/ 03 марта 2012

В дополнение к этому ответу 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  
0 голосов
/ 02 марта 2012

Если у вас все в порядке с TortoiseSVN , вы можете ввести ловушку на стороне клиента .

TortoiseSVN передает следующие параметры в ловушку перед фиксацией:

СООБЩЕНИЕ ГЛУБИНЫ ПУТИ CWD

где интересный PATH:

PATH
Путь к временномуфайл, который содержит все пути, для которых была запущена операция.Каждый путь находится на отдельной строке во временном файле.

Итак, когда вызывается ваш хук (кстати, на любом языке), выполните следующие шаги:

  1. проверьте содержание MESSAGEFILE.Если внутри есть комментарий, все в порядке, вернемся успешно из скрипта (я не помню, обозначен ли успех 0 или! 0, просто попробуйте)
  2. , если MESSAGEFILE пусто, просмотрите файл PATH и посмотрите, есть ли в нем затронутые элементы.Если это так, верните ошибку;в противном случае верните успех.
0 голосов
/ 02 марта 2012
  1. У вас не может быть хуков, которые работают с событием только для некоторого поддерева
  2. Хуки являются обработчиками для событий всего репозитория
  3. Если вы хотите проверить только некоторые частизатронутый репо, вы должны добавить логику в код хука
...