ежедневный отчет о коммитах для svn - PullRequest
4 голосов
/ 26 октября 2011

У меня есть зацепка после фиксации, которая сохранит журнал svn в виде файла XML. Далее мне нужно выполнить форматирование для отображения данных в форме табличного отчета, который будет содержать следующие данные: 1) Порядок работы № 2) Имя файла 2) Путь к файлу 3) Редакция № 4) Владелец 5) Время фиксации

Этот отчет необходимо отправлять группе ежедневно в 17:00 по электронной почте.Мне нужен пример кода для помощи.

Ответы [ 3 ]

2 голосов
/ 26 октября 2011

Нет никаких причин использовать ловушку после фиксации, потому что вы можете просто получить данные, используя svn log -v --xml.Вы можете попросить его о пересмотре по дате;например, svn log -v --xml -r "$(date +'{%Y-%m-%d}'):HEAD", чтобы получить сегодняшние ревизии.Помните также, что в журнале svn можно указывать URL вместо локальной проверки.

На любом языке программирования, с которым вы знакомы, наверняка есть библиотеки синтаксического анализа XML, которые можно использовать для преобразования XML в отчет.1006 * Затем вам нужно просто организовать вызов вашей программы один раз в день.В Unix вы бы использовали cron.В Windows вы можете использовать планировщик заданий.

Кроме этого, вы запрашиваете что-то опасно близкое к «напишите мой код для меня».

2 голосов
/ 26 октября 2011

Все зависит от языка, который вы используете.

Многие языки имеют модули для чтения XML-файлов. Например, в Perl есть модуль XML :: Simple .

Если это ежедневный отчет, который вам нужен для вашего хранилища Subversion в 17:00 каждый день, лучше просто запустить отчет один раз в 17:00, используя какое-либо программное обеспечение для планирования. В Unix-системах вы можете использовать демон cron , чтобы запланировать запуск сценария в вашей системе. В Windows вы можете воспользоваться мастером планирования задач .

Запуск отчета может быть очень простым. Все, что вам нужно, это что-то вроде этого:

svn log -v '{'$YESTERDAY'}':HEAD http://path/to/repository

Вы должны рассчитать, что такое $YESTERDAY, и поместить его в YYYYMMDD формат, и у вас есть отчет!

Как вы получаете вчерашнюю дату? Зависит от вашего языка программирования. Большинство операционных систем хранят даты в виде количества секунд от epoc (в Unix это 1 января 1970 года). Вы используете подпрограммы даты вашего языка программирования.

Это будет указано в порядке набора изменений со списком файлов, измененных под каждым набором изменений. Если вам нужен другой формат, вы можете использовать переключатель --xml и получить отчет в формате XML. Формат этого вывода XML довольно прост и имеет настолько регулярную структуру, что его можно даже проанализировать без использования модуля синтаксического анализа XML.

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

И, поскольку он использует svn, все, что вам нужно, это клиент Subversion. Вам даже не нужно составлять этот отчет на определенном компьютере, если на этом компьютере есть клиент командной строки Subversion (загружаемый из многих мест) и когда-либо указывается, когда отчет может быть запущен.

1 голос
/ 26 октября 2011

Я думаю, что хук SVN - неправильная задача для этой работы. Ведь это срабатывает только после каждого коммита (что если у вас сотни коммитов в день? Что если никто не коммитит около 5 вечера?). Вместо этого я написал бы задание cron (linux) или запланированное задание (windows), чтобы делать это каждый день в 5 вечера. Вы можете использовать инструменты командной строки svn, чтобы запросить журнал из хранилища, переформатировать его, а затем отправить его по электронной почте.

...