Gear/changelog — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
==gear-changelog==
+
{{h0|gear-changelog}}
===gear-changelog vs git-shortlog===
+
----
 +
 
 +
== 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> использует набор со своими правилами. правила находят в файле <tt>.gear/changelog</tt>. Формат правил таков:
 
+
* <code>width: <NUM></code><br />Это глобальная директива в правилах, указывающая ширину строки.
* <code>width: <NUM></code><br>Это глобальная директива в правилах, указывающая ширину строки.
+
* <code>group: <TITLE></code><br />Заголовок группы
 
+
* <code>regexp: <PATTERN></code><br />grep-паттерн для того, чтобы отнести коммит к этой группе
* <code>group: <TITLE></code><br>Заголовок группы
+
* <code>filter: <SED-S-COMMAND></code><br />sed’овкий s/// для возможных исправлений.
*<code>regexp: <PATTERN></code><br>grep-паттерн для того, чтобы отнести коммит к этой группе
 
*<code>filter: <SED-S-COMMAND></code><br>sed'овкий s/// для возможных исправлений.
 
  
 
'''Пример:'''
 
'''Пример:'''
Строка 62: Строка 61:
 
regexp: .*</pre>
 
regexp: .*</pre>
  
Можно не заниматься группировками и вызвать утилиту без правил вообще (<tt>--no-rules</tt>) и/или не применять группировку (<tt>--no-groups</tt>). В этом случае вывод будет прост. Но мне кажется что группировать по префиксу коммита очень удобно... особенно если с терминологией определишься. Это помогает и коммиты более понятные делать и <tt>changelog</tt> формировать.
+
Можно не заниматься группировками и вызвать утилиту без правил вообще (<tt>--no-rules</tt>) и/или не применять группировку (<tt>--no-groups</tt>). В этом случае вывод будет прост. Но мне кажется что группировать по префиксу коммита очень удобно… особенно если с терминологией определишься. Это помогает и коммиты более понятные делать и <tt>changelog</tt> формировать.
  
У самой утилиты <tt>gear-changelog</tt> очень мало опций, единственная которая ещё достоена внимания это <tt>--format</tt>. Эта утилита генерирует <tt>changelog</tt> не только в rpm формате, формально она поддерживает ещё и <tt>deb</tt> и <tt>gnu</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
  
Вот как выглядbт его gear/changelog:
+
Вот как выглядит его 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
  
 
[[Категория:Gear]]
 
[[Категория:Gear]]

Версия 10:58, 15 апреля 2009

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:

http://git.altlinux.org/people/legion/packages/libshell.git?p=libshell.git;a=blob;f=.gear/changelog;hb=HEAD