Как отправить стандартный вывод пользователю при запуске ловушки предварительной фиксации SVN - PullRequest
6 голосов
/ 23 июля 2010

У меня есть ловушка предварительной фиксации для SVN, которая запускает программу проверки ошибок и прерывает фиксацию в случае проблем.stderr перенаправляется пользователю, инициирующему принятие в случае проблем.Но я хотел бы отправить вывод пользователя из программы проверки ошибок, даже если проблем не было найдено, чтобы пользователь был уведомлен о том, что программа проверки ошибок запустилась и не обнаружила проблем.Как это сделать с помощью SVN pre-commit hook?

Ответы [ 3 ]

7 голосов
/ 26 июля 2010

Крюки Subversion съедают свой STDOUT. После запуска сценария STDOUT отсутствует. Вы даже не можете заставить скрипт предварительной фиксации отправить STDOUT другому процессу.

Однако внутри ловушки предварительной фиксации STDOUT все еще существует и все еще может быть перенаправлен. Например, мой хук состоит из сценария оболочки, состоящего из нескольких строк утилит командной строки Unix. У каждой утилиты командной строки есть STDIN и STDOUT, и я могу передавать данные от одного к другому. Но как только этот скрипт-хук завершится, STDOUT не будет.

Другое дело, что нет способа сообщить STDOUT через парадигму ловушек. Subversion не предоставляет никакой связи. Существует ссылка для STDERR, но только в случае сбоя самой ловушки. Это ловушка перед фиксацией, я сомневаюсь, что вы намеренно хотите потерпеть неудачу в этой ловушке, просто чтобы предоставить пользователю отчет.

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

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

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

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

0 голосов
/ 25 апреля 2012

В моем случае я написал простое приложение для Windows на C # для отображения хода выполнения ловушки.

0 голосов
/ 23 июля 2010

Вы должны каким-то образом сопоставить имя пользователя с адресом электронной почты.Затем вы можете собрать вывод в файл и отправить его по почте коммиттеру.

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