TL;DR: gitchangelog 自身の変更ログ、または以前のものを生成したASCII 出力を確認することをお勧めします。
Git 履歴から変更ログを生成する場合は、おそらく次のことを考慮する必要があります。
- 出力フォーマット。(純粋なカスタム ASCII、Debian変更ログ タイプ、Markdown、RESTなど)
- いくつかのコミット フィルタリング(おそらく、すべてのタイプミスや表面的な変更が変更ログに記録されるのを見たくないでしょう)
- いくつかは、変更ログに含まれる前にテキストのラングリングをコミットします。(最初の文字が大文字または最後のドットを持つメッセージの正規化を保証しますが、要約の特別なマークアップも削除される可能性があります。)
- あなたのGit 履歴は互換性がありますか? マージとタグ付けは、ほとんどのツールで必ずしも簡単にサポートされるとは限りません。履歴をどのように管理するかによって異なります。
必要に応じて、いくつかの分類 (新しいもの、変更、バグ修正など) が必要になる場合があります。
これらすべてを念頭に置いて、gitchangelogを作成して使用しました。これは、 Git コミット メッセージ規則を活用して、以前のすべての目標を達成することを目的としています。
素敵な変更ログを作成するためには、コミット メッセージの規約が必須です (を使用するかどうかに関係なくgitchangelog
)。
コミットメッセージ規約
以下は、コミットメッセージに追加することについて考えるのに役立つ可能性のある提案です。
コミットを大まかに大きなセクションに分けたいと思うかもしれません:
- 意図による (例: 新規、修正、変更など)
- オブジェクト別 (例: ドキュメント、パッケージング、コードなど)
- 対象者別 (例: 開発者、テスター、ユーザーなど)
さらに、いくつかのコミットにタグを付けることができます:
- 変更ログに出力されるべきではない「マイナーな」コミットとして (表面的な変更、コメントの小さなタイプミスなど)
- 重要な機能の変更が実際にない場合は、「リファクタリング」として。したがって、これは、たとえば、最終ユーザーに表示される変更ログの一部であってはなりませんが、開発者の変更ログがある場合は、興味深いかもしれません。
- APIの変更や新しいAPIのものをマークするために、「API」でタグ付けすることもできます...
- ...等...
できるだけ頻繁にユーザー (機能) をターゲットにして、コミット メッセージを書くようにしてください。
例
これは、この情報を保存する方法を示す標準ですgit log --oneline
::
* 5a39f73 fix: encoding issues with non-ASCII characters.
* 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
ツールがあることを知っていると思います。
免責事項:私はgitchangelogの作成者であり、これについて以下で説明します。