免責事項:私はgitchangelogの作成者ですが、以下で説明します。
TL; DR:gitchangelog自体の変更ログ、または以前に生成されたASCII出力を確認することをお勧めします。
git履歴から変更ログを生成する場合は、おそらく次のことを考慮する必要があります。
- 出力形式。(純粋なカスタムASCII、Debian changelogタイプ、Markdow、ReST ...)
- いくつかのコミットフィルタリング(おそらく、すべてのタイプミスや表面的な変更が変更ログに記録されるのを見たくないでしょう)
- 変更ログに含まれる前に、いくつかのコミットテキストがラングリングします。(最初の文字が大文字または最後のドットがあるようにメッセージの正規化を確実にしますが、要約からいくつかの特別なマークアップを削除することもできます)
- あなたのgit履歴は互換性がありますか?マージ、タグ付けは、ほとんどのツールで常に簡単にサポートされるわけではありません。履歴の管理方法によって異なります。
オプションとして、いくつかの分類(新しいもの、変更、バグ修正)が必要な場合があります...
これらすべてを念頭に置いて、gitchangelogを作成して使用しました。これは、前の目標をすべて達成するためにgit commit message規約を活用するためのものです。
素敵な変更ログを作成するためには、コミットメッセージの規則が必須です(を使用してもしなくてもgitchangelog
)。
コミットメッセージ規約
以下は、コミットメッセージに追加することについて考えるのに役立つかもしれないものへの提案です。
大まかにコミットを大きなセクションに分けたいかもしれません:
- 意図による(例:新規、修正、変更...)
- オブジェクト(例:doc、パッケージング、コード...)
- 対象者(例:開発者、テスター、ユーザーなど)
さらに、いくつかのコミットにタグを付けることができます:
- 変更ログに出力されるべきではない「マイナー」なコミットとして(見た目の変更、コメントの小さなタイプミス...)
- 重要な機能変更が実際にない場合は、「リファクタリング」として。したがって、これは、たとえば最終ユーザーに表示される変更ログの一部であるべきではありませんが、開発者の変更ログがある場合は、興味深いかもしれません。
- 「api」でタグ付けして、APIの変更または新しいAPIのものをマークすることもできます...
- ...等...
できる限り頻繁にユーザー(機能)をターゲットにしてコミットメッセージを記述してください。
例
これはgit log --oneline
、これらの情報がどのように保存されるかを示すための標準です::
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
気が付いたら、私が選択したフォーマットは次のとおりです。
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
実際の出力結果を確認するには、gitchangelogの PyPIページの最後を見てください。
私のコミットメッセージ規約の完全なドキュメントを見るには、参照ファイルgitchangelog.rc.referenceを見ることができます
これから絶妙な変更ログを生成する方法
その後、完全な変更ログを作成するのは非常に簡単です。独自のスクリプトをすばやく作成することも、を使用することもできますgitchangelog
。
gitchangelog
完全な変更ログを生成し(セクショニングサポートはNew
、Fix
...など)、独自のコミット規則に適度に設定できます。を介したテンプレート化によりMustache
、あらゆるタイプの出力をサポートしMako templating
、未加工のpythonで記述されたデフォルトのレガシーエンジンを備えています。現在の3つのエンジンにはすべて、それらの使用例があり、gitchangelogのPyPIページに表示されるものとして、変更ログを出力できます。
私は、あなたが他の多くがあることを知っているよgit log
にchangelog
もそこのツール。
--graph
で、コミットがオンになっているブランチを視覚的に示します。