Генерация changelog'a

Ведение истории изменений версий проекта - задача довольно скучная. Когда проект - это заказная разработка, то существуют и другие способы предоставить информацию об изменениях (например, рассказать на demo), но changelog всё равно нужен - как минимум для истории. Когда проект - это опенсорс-библиотека, то changelog является единственным легкодоступным способом узнать о новых фичах. В общем, так или иначе, эту скучную задачу ведения истории решать надо.

Кстати, я заметил, что скука - довольно хороший критерий автоматизируемости задачи. Ведь если задача становится скучной - значит ты каждый раз делаешь одно и то же, а это значит что можно это запрограммировать.

Итак, озадачившись задачей генерацией changelog’a, я полез искать а какие же есть готовые решения. Требования к тулу у меня были довольно простые - уметь работать с git’ом, генерировать changelog в формате markdown и быть плагином для мавена =). Я уже морально готовился написать свой плагин, когда наткнулся таки на maven-gitlog-plugin.

Единственное, что меня в нём не устраивало - это то, что даты он выводил в дефолтном “длинном” формате с указанием времени и таймзоны. Такая детализация на мой взгляд захламляет историю, и этот недостаток я быстро исправил (люблю опенсорс =)). Еще немного времени ушло на разбирательство с тестами, которые проходили локально, но не хотели проходить в CI (да-да, все pull-request’ы чьего-то личного репозитория на гитхабе собираются travis’ом, прикинь?).

Как только я разобрался с тестами, владелец плагина собрал релизную версию 1.5.2 и я сразу подключил его в один из наших проектов. Сделать это тоже оказалось очень легко, потому что мы уже используем для релизов maven-release-plugin. Например, на стадии release:prepare этот плагин инкрементирует версию проекта и его модулей и подготавливает все необходимые для релиза файлы. При этом плагин позволяет включить в процесс релиза произвольную задачу, что я и сделал =).

Что из этого получилось? Скоро увидите! А какие инструменты для генерации changelog’a используются у вас в проекте? Или пишется вручную?

comments powered by Disqus