SVN pre-commit-hook, есть ли способ установить сообщение журнала в окне клиента? - PullRequest
1 голос
/ 03 января 2012

спасибо, что прочитали мой вопрос:)

Моя цель - изменить это сообщение до запуска коммита на SVN-сервере:

enter image description here

У меня уже есть хук start и pre-commit (C #), оба они вызываются, когда я пытаюсь что-то зафиксировать.У меня также есть рабочая библиотека SharpSvn.Но, к сожалению, я не продвигаюсь вперед, я понятия не имею, как заполнить это сообщение.

Так возможно ли это, и если да, то как?Я рад каждому маленькому намёку:)

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Хуки коммитов не общаются с клиентом, за исключением случаев сбоя. Затем они отправляют пользователю все, что было отправлено на Стандартная ошибка . Скрипты Hook не могут изменить какой-либо аспект коммита. (Это не совсем так: ловушка после фиксации может изменить сообщение о коммите, автора и время фиксации, но обычно это очень плохая идея.)

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

Я бы не рекомендовал использовать встроенные клиентские хуки TortoiseSVN. Они выполняются на индивидуальной основе, поэтому пользователь может отказаться от них, и они не работают, если пользователь использует другой клиент (например, плагин VisualStudio AnkhSVN).

Вы не упомянули, что вы пытаетесь сделать и почему.

Вы можете использовать my hook , написанный на Perl. Хук кухонная раковина выполняет несколько задач, и одна из них гарантирует, что сообщение о фиксации имеет правильный формат. Например, вы можете потребовать, чтобы он содержал идентификатор отслеживания дефектов, или иметь длину не менее ... скажем ... 10 символов.

Однако, если сообщение о коммите пользователя не соответствует критериям, перехватчик не выполнит коммит, и пользователю придется повторить попытку. Хитрость заключается в том, чтобы поставить хорошее сообщение об ошибке, чтобы пользователь знал, что он сделал не так. Поверьте, после одной или двух попыток пользователи получают представление о том, каким должно быть хорошее сообщение о коммите.

Однако вы можете попробовать немного другой маршрут: используйте систему непрерывной интеграции, такую ​​как Jenkins .

Что я заметил, так это то, что как только я запускаю проект на Jenkins, сообщения о коммитах автоматически улучшаются. Каждый коммит Subversion превращается в сборку. Но Дженкинс также показывает все изменения между предыдущей и текущей сборкой и сообщением о коммите.

Это в основном связано с видимостью. До Дженкинса сообщения коммитов довольно скрыты. Вы видите их, только если вы сделали svn log, и мало кто когда-либо делал это регулярно. Тем не менее, в Jenkins, вы видите это прямо на каждой сборке и фиксации. Вы можете увидеть историю, кто ее изменил, и что они изменили с помощью нескольких кликов на веб-странице.

Это может быть лучший способ справиться с тем, что вы хотите.

2 голосов
/ 03 января 2012

Хорошо, я нашел ответ :)

Было неправильно с моей стороны пытаться сделать это с помощью хук-скрипта.Лучшее решение - создать собственный плагин для отслеживания проблем:

http://tortoisesvn.googlecode.com/svn/trunk/contrib/issue-tracker-plugins/issue-tracker-plugins.txt

Теперь я могу читать свои проблемы из БД, позволяя разработчику выбирать те, которые ему нужны, и помещать их в журнал.окно сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...