[devel] gear-changelog
Alexey Gladkov
legion на altlinux.ru
Вт Апр 14 22:20:28 MSD 2009
14.04.2009 19:16, Afanasov Dmitry wrote:
> /me до сих не допер, как gear-changelog юзать и ничего, живой вроде :)
Ну эта команда была сделана когда в нескольких своих проектах я устал
делать механическую работу перед релизом.
Эта утилита формирует changelog, но делает это несколько иначе чем
git-shortlog. Вот, например, вывод последнего:
Alexey Gladkov (11):
Add license
shell-var: Add new source
shell-args: parse_common_option(): Option --quiet cancels option --verbose
shell-var: shell_var_unquote(): Returns the value through eval
shell-var: Rename shell_var_{no,yes} -> shell_var_is_{no,yes}
Merge branch 'shell-var'
shell-lists: Add new source
shell-quote: Add quote_shell_args()
shell-quote: Fix Usage for quote_shell_args
shell_var_unquote(), string_quote_remove(): Fix "'" unquote for bash
shell-quote: Rewrite quote_shell_args() from scratch, to avoid the dangerous shell constructions
Из 11 коммитов как тут сделать changelog можно, но если коммитов
значительно больше и изменения ещё более дифференцированы, то радости
никакой при этом не испытываешь. Я сломался на втором большом релизе.
Утилита gear-changelog выводит коммиты от последнего тега, если не указано другое.
Вот вывод те же изменения, но полученные через gear-changelog:
$ gear-changelog
* Tue Apr 14 2009 Alexey Gladkov <legion на altlinux.org> 0.0.9-alt2
- shell-quote changes:
+ Rewrite quote_shell_args() from scratch, to avoid the dangerous
shell constructions.
+ Fix Usage for quote_shell_args.
+ Add quote_shell_args().
- shell-var changes:
+ Rename shell_var_{no,yes} -> shell_var_is_{no,yes}.
+ shell_var_unquote(): Returns the value through eval.
+ Add new source.
- Other changes:
+ Update .gear/changelog.
+ shell_var_unquote(), string_quote_remove(): Fix "'" unquote
for bash.
+ shell-lists: Add new source.
+ shell-args: parse_common_option(): Option --quiet cancels
option --verbose.
+ Add license.
Они сгруппированы и из них выброшены некоторые лишние коммиты.
Как это сделано:
gear-changelog использует набор со своими правилами. Формат их таков:
width: <NUM>
Это глобальная директива в правилах, указывающая ширину строки.
group: <TITLE>
regexp: <PATTERN>
filter: <SED-S-COMMAND>
Первая строка это заголовок группы, вторая это grep-паттерн для того,
чтобы отнести коммит к этой группе, третья (необязательная) строчка
это sed'овкий s/// для возможных исправлений. Например:
group: shell*-config changes
regexp: ^shell(-ini)?-config:
filter: s/^shell(-ini)?-config: //
group: Documentation changes
regexp: ^[^:]+\.man:
group: Other changes
regexp: .*
Можно не заниматься группировками и вызвать утилиту без правил
вообще (--no-rules) и/или не применять группировку (--no-groups).
В этом случае вывод будет прост. Но мне кажется что группировать по
префиксу коммита очень удобно... особенно если с терминологией
определишься. Это помогает и коммиты более понятные делать и changelog
формировать.
У самой утилиты gear-changelog очень мало опций, единственная которая
ещё достоена внимания это --format. Эта утилита генерирует changelog
не только в rpm формате, формально она поддерживает ещё и deb и gnu.
За два последних прошу не пинать. Я добавлял их из соображений не
прибивания одного какого-то формата вывода. Они сделаны just-for-fun,
но похожи на настоящие :)
> увидеть бы последовательность команд и ошибки, тогда проще было бы.
> чем лопатить яростную переписку.
Приведённый тут вывод был получен на дрепозитории:
http://git.altlinux.org/people/legion/packages/libshell.git
Вот как выглядbт его gear/changelog:
http://git.altlinux.org/people/legion/packages/libshell.git?p=libshell.git;a=blob;f=.gear/changelog;hb=HEAD
--
Rgrds, legion
Подробная информация о списке рассылки Devel