Gear/changelog: различия между версиями
Ender (обсуждение | вклад) (Создана новая страница размером ===gear-changelog=== ====gear-changelog vs git-shortlog==== Эта утилита формирует <tt>changelog</tt>, но делает...) |
Нет описания правки |
||
(не показаны 4 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
{{h0|gear-changelog}} | |||
---- | |||
== gear-changelog vs git-shortlog == | |||
Эта утилита формирует <tt>changelog</tt>, но делает это несколько иначе чем <tt>git-shortlog</tt>. Вот, например, вывод последнего: | Эта утилита формирует <tt>changelog</tt>, но делает это несколько иначе чем <tt>git-shortlog</tt>. Вот, например, вывод последнего: | ||
<pre>Alexey Gladkov (11): | <pre>Alexey Gladkov (11): | ||
Строка 41: | Строка 43: | ||
Они сгруппированы и из них выброшены некоторые лишние коммиты. | Они сгруппированы и из них выброшены некоторые лишние коммиты. | ||
== Как это сделано == | |||
<tt>gear-changelog</tt> использует набор со своими правилами. Правила находятся в файле <tt>.gear/changelog</tt>. Формат правил таков: | |||
<tt>gear-changelog</tt> использует набор со своими правилами. | * <code>width: <NUM></code><br />Это глобальная директива в правилах, указывающая ширину строки. | ||
* <code>group: <TITLE></code><br />Заголовок группы | |||
* <code>width: <NUM></code><br>Это глобальная директива в правилах, указывающая ширину строки. | * <code>regexp: <PATTERN></code><br />grep-паттерн для того, чтобы отнести коммит к этой группе | ||
* <code>filter: <SED-S-COMMAND></code><br />sed’овкий s/// для возможных исправлений. | |||
* <code>group: <TITLE></code><br>Заголовок группы | |||
*<code>regexp: <PATTERN></code><br>grep-паттерн для того, чтобы отнести коммит к этой группе | |||
*<code>filter: <SED-S-COMMAND></code><br> | |||
'''Пример:''' | '''Пример:''' | ||
Строка 62: | Строка 61: | ||
regexp: .*</pre> | regexp: .*</pre> | ||
Можно не заниматься группировками и вызвать утилиту без правил вообще (<tt>--no-rules</tt>) и/или не применять группировку (<tt>--no-groups</tt>). В этом случае вывод будет прост. Но мне кажется что группировать по префиксу коммита очень | Можно не заниматься группировками и вызвать утилиту без правил вообще (<tt>--no-rules</tt>) и/или не применять группировку (<tt>--no-groups</tt>). В этом случае вывод будет прост. Но мне кажется что группировать по префиксу коммита очень удобно… особенно если с терминологией определишься. Это помогает и коммиты более понятные делать и <tt>changelog</tt> формировать. | ||
У самой утилиты <tt>gear-changelog</tt> очень мало опций, единственная которая ещё | У самой утилиты <tt>gear-changelog</tt> очень мало опций, единственная которая ещё достойна внимания это <tt>--format</tt>. Эта утилита генерирует <tt>changelog</tt> не только в rpm-формате, формально она поддерживает ещё и <tt>deb</tt> и <tt>gnu</tt>. | ||
За два последних прошу не пинать. Я добавлял их из соображений не прибивания одного какого-то формата вывода. Они сделаны just-for-fun, | За два последних прошу не пинать. Я добавлял их из соображений не прибивания одного какого-то формата вывода. Они сделаны just-for-fun, но похожи на настоящие :) | ||
но похожи на настоящие :) | |||
== Замечание == | |||
Приведённый тут вывод был получен на репозитории: | Приведённый тут вывод был получен на репозитории: | ||
http://git.altlinux.org/people/legion/packages/libshell.git | http://git.altlinux.org/people/legion/packages/libshell.git | ||
Вот как | Вот как выглядит его gear/changelog: | ||
http://git.altlinux.org/people/legion/packages/libshell.git?p=libshell.git;a=blob;f=.gear/changelog;hb=HEAD | http://git.altlinux.org/people/legion/packages/libshell.git?p=libshell.git;a=blob;f=.gear/changelog;hb=HEAD | ||
{{Category navigation|title=gear|category=gear|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 18:14, 16 июля 2015
gear-changelog
gear-changelog vs git-shortlog
Эта утилита формирует 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 использует набор со своими правилами. Правила находятся в файле .gear/changelog. Формат правил таков:
width: <NUM>
Это глобальная директива в правилах, указывающая ширину строки.group: <TITLE>
Заголовок группыregexp: <PATTERN>
grep-паттерн для того, чтобы отнести коммит к этой группеfilter: <SED-S-COMMAND>
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
Вот как выглядит его gear/changelog: