Физтех в лицах  
 Колесников Михаил
Колесников МихаилСтатьиSubversionRSS

  Фото  
 
 
   
 
   
   
   
   
   
   
   
   
   
SubversionRSS

Сегодня закончились долгие мучения - я настроил генерацию RSS потока с нашего репозитория. Дело это конечно простенькое, потому как не я первый этим озаботился, но мне хотелось реализовать это наименее трудозатратным способом. Итак - часть первая.

Поиск

В нашей глобальной сети можно найти массу полезного по тревожащему меня вопросу. Например есть сравнительный анализ различных SVN-вьюверов. Конечно можно воспользоваться ими, но, к сожалению нет среди них полностью Java-based утилит. А всё это в ближайшем будущем надо будет интегрировать с LDAP сервером... Надо делать RSS самому. Как это делать написано здесь, но ещё не плохо и протестировать своё творение тут Всё вроде просто, но как получить желаемый XML?

Идея 1

Первая пришедшая мне в голову мысль поставила меня на ложный путь - я решил воспользоваться hook скриптами. Это не верный ход! Их назначение - лишь подменять свойства файлов. Далеко я так не ушёл, но опыт получилю.

Идея 2

Вторая идея оказалась плодотворнее - Google. Там я отыскал вот такую статейку. В ней доходчиво объясняют английским почёрному, что можно воспользоваться и средствами винды, коли уж такая у нас есть. Оказывается команда svn log с соответствующими параметрами выдаёт довольно приятного вида XML-file. Для его приведения в RSS-XML остайтся лишь подправить найденный шаблон. Это оказалось сложнее всего. Но результат этого дела можно увидеть прямо сейчас - Creator.xls.

Обсуждение результата

Конечно, внимательный читатель, просмотрев этот файл, обнаружит там следующее <xsl:value-of select="/log/svn-url"/>. Что вы, возопит он, команда svn -v --xml --limit 100 log не выдаёт такого! И будет он прав, ведь я использую команду с ещё одним параметром - --incremental она выдаёт только тэги logentry. Окружая вывод этой команды содержимым header.txt и footer.txt можно добиться желаемого результат (вы догадались, что странный тэг находится в header.txt :) ).

Окончание

А дальше пишем батник и обычным Saxon-ом получаем результат, превосходящий ожидания. Батник ставим в расписанные задачи (Sheduled Task) и наслаждаемся новым ощущением свободы - теперь вы можете своевременно остановить товарища по команде, увидев ошибки в его коммитах. Надеюсь это будет полезно хоть кому-нибудь :)

Комментарии

Тут!


 
© 2001-2006 Moscow Institute of Physics and Technology (State University)
Developing: Center of Pre-University Education «Phystech-Center».
Site created with ARP-technology
Рейтинг сайтов  Arp.site