В качестве стандарта для технической документации возьмем DocBook 5. Поскольку в конечном итоге это xml файл, к нему применимы XInclude, а значит таблицу можно вынести в отдельную секцию и просто вставлять в главу книги или статью. Будем считать, что в таблице нам надо только два поля - Дата изменения и Содержание изменения с именем Автора. Эти данные надо взять из системы контроля версий. Лично мне нравится Git и все необходимые данные можно получить из git log с опцией --format. К примеру git log --format=format:"%ai|%an,%ae:%s" выдаст что-то типа 2011-04-09 23:23:24 +0400|Author,user@mail.com:Commit subject. Будем использовать символ "|" для разделения полей. Скорее всего такой генератор прийдется тюнить под свои нужды для каждого проекта, поэтому сделаем все в виде скрипта на python. Выглядит это так:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
gitlog = subprocess.Popen(['git','log', '--format=format:"%ai|%an,%ae: %s"', '-n 20'], stdout=subprocess.PIPE)
f = open('gitlog.xml', 'w')
f.write(
"""<?xml version="1.0" encoding="UTF-8"?>
<sect1 xmlns="http://docbook.org/ns/docbook" version="5.0">
<title>История изменений документа</title><table xml:lang="ru"><caption>История изменений</caption><col width="20%"/><col width="80%"/>
<thead><tr><th>Дата</th><th>Содержание</th></tr></thead>
<tbody>
"""
)
while True:
line = gitlog.stdout.readline()
if line != '':
line= line[1:len(line)-2]
cols=line.split("|")
f.write("<tr><td>"+cols[0]+"</td><td>"+cols[1]+"</td></tr>")
else:
break
f.write("</tbody></table></sect1>")
f.close()
Из скрипта понятно, что в историю выводим последние 20 коммитов. Запуская скрипт из директории с репозиторием Git, создается xml-файл секции DocBook с таблицей коммитов под наименованием gitlog.xml. Осталось собрать книгу и вставить в нужное место нашу табличку.
Собираем книгу book.xml:
<?xml version="1.0" encoding="UTF-8"?> <?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbookxi.rng" type="xml"?> <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru" > <info> <title>Единая федеральная информационная система ВОРЕНОИЦПУРРОК (подпрограмма 2012-2130 годы)</title> <author> <orgname>Федеральная служба ВОРЕНОИЦПУРРОК</orgname> <address> <city>Дефолт-сити</city> <street>Дефолт-стрит</street> <postcode>000000</postcode> <country>Снежная Нигерия</country> </address> <email>effective.manager@kremlin.ru</email> </author> </info> <xi:include href="preface.xml"/> <xi:include href="chapter01.xml"/> <xi:include href="chapter02.xml"/> <xi:include href="chapter03.xml"/> </book>
видно, что в книге есть вставки предисловия и трех глав. Собираем предисловие (preface.xml):
<?xml version="1.0" encoding="UTF-8"?> <preface xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="ru"> <title>Предисловие</title> <sect1><title>Кому нужна Единая федеральная информационная система ВОРЕНОИЦПУРРОК?</title> <para>Размах тотального оболванивания электората в условиях бурного развития современных информационных технологий ставит вопрос о необходимости новой волны активизации процессов закупки государством воздуха в форме информационных систем. Безграничные возможности осуществления этих мероприятий за счет государственного бюджета или доходов государственных предприятий, являющимися естественными или неестественными монополиями, позволят значительно укрепить личные активы государственных эффективных менеджеров. Разработка и внедрение системы ВОРЕНОИЦПУРРОК, наравне с созданием аналогичных систем ЕГАИС, ЕФИСН, ГКН, ГИСТЭК, ЕГИС ОТБ, ЕГС-АБЫРВАЛГ и др., позволит значительно увеличить отрицательное значение Коэффициента Полезного Действия (КПД) процессов во всех областях деятельности на ближайшие 119 лет. </para> </sect1> <!-- А вот здесь вот changelog от Git --> <xi:include href="gitlog.xml"/> </preface>
Обращаем внимание на вставку gitlog.xml. Ну и пример сгенерированной секции:
<?xml version="1.0" encoding="UTF-8"?> <sect1 xmlns="http://docbook.org/ns/docbook" version="5.0"> <title>История изменений</title> <table xml:lang="ru"><caption>Таблица истории изменения</caption> <col width="20%"/><col width="80%"/> <thead><tr><th>Дата</th><th>Содержание</th></tr></thead> <tbody> <tr><td>2011-04-10 03:42:11 +0400</td><td>Эффективный менеджер, effective.manager@kremlin.ru: Коллеги подсказали, что сейчас самая модная сумма - триллион, для достижения такой суммы придумал еще две статьи расходов и описал их в секциях 3.5 и 3.6 </td></tr> <tr><td>2010-04-09 23:23:24 +0400</td><td>Эффективный менеджер, effective.manager@kremlin.ru: В связи с тем, что друг семьи тоже решил стать эффективным государственным менеджером, заложил основы для создания подпрограммы развития системы ВОРЕНОИЦПУРРОК с 2130 по 2200 годы </td></tr> <tr><td>2009-04-09 20:24:28 +0400</td><td>Эффективный менеджер, effective.manager@kremlin.ru: Удалил секцию 3.2 по причине того, что 5 процентов отката от ВОРЕНОИЦПУРРОК, причитающегося мне, отдали сыну моего начальника. Вот пусть эту секцию сотрудники его департамента и пишут. </td></tr> <tr><td>2008-04-09 20:23:53 +0400</td><td>Эффективный менеджер, effective.manager@kremlin.ru: Написал главу 5, на вырученные деньги, по совету друзей, купил виллу на Лазурном берегу и французское гражданство. </td></tr> </tbody></table></sect1>
При печати документа в PDF будет получен вполне сносный результат:

Комментариев нет:
Отправить комментарий