◾️はじめに
Git・Githubだけの話ではないのだが、 Semantic Versioning / Conventional Commitsについて学んだので メモしておく。 どちらも公式ドキュメントにちゃんとした日本語がサポートされているので 習得は比較的に容易かと思う、、、
目次
【1】Semantic Versioning 1)Semantic Versioningの構文 【2】Conventional Commits 1)Conventional Commitsの構文 2)BREAKING CHANGE 【3】どう役立つのか?
今回のキモ
* 「型(type)」と「BREAKING CHANGE」で、バージョン更新ルールを決める のが今回のキモ
【1】Semantic Versioning
* バージョン番号(XX.XX.XX)の付け方の規約
1)Semantic Versioningの構文
<Major ver>.<Minor ver>.<Patch ver>
更新ルール | 説明 |
---|---|
Major ver | APIの変更に互換性のない場合 |
Minor ver | 後方互換性があり機能性を追加した場合 |
Patch ver | 後方互換性を伴うバグ修正をした場合 |
【2】Conventional Commits
* コミットメッセージを統一するための規約 * 以下の公式ドキュメントに記載されている通り「 SemVer と協調動作」
https://www.conventionalcommits.org/ja/v1.0.0/
1)Conventional Commitsの構文
< type 型>[任意 scope スコープ]: < description タイトル> [任意 body 本文] [任意 footer(s) フッター]
例
# feat(型):allow provided config object to extend other configs(タイトル)
feat: allow provided config object to extend other configs
型
* ここがキモのその1
Type | Explanations | Memo |
---|---|---|
fix: | バグ修正パッチ | Semantic Versioning における PATCH に相当 |
feat: | 新機能の追加 | Semantic Versioning における MINOR に相当 |
docs: | ドキュメント変更 | |
style: | コードスタイル変更(改行修正など) | |
refactor: | リファクタリング | |
perf: | パフォーマンス向上のための修正 | |
test: | テストの追加・修正 | |
build: | ビルドシステムの変更/依存関係アップデート | |
ci: | CI/CD の設定変更 | |
chore: | その他の変更 |
2)BREAKING CHANGE
* フッター に BREAKING CHANGE: が書かれている or 型/スコープの直後に ! が追加されているコミットは API の破壊的変更 * Semantic Versioning における MAJOR に相当
例1: フッター に BREAKING CHANGE
feat: add new feature - part1 BREAKING CHANGE: This is a breaking change
例2: 型/スコープの直後に ! が追加されているコミット
feat!: add new feature - part2
【3】どう役立つのか?
* 例えば、以下のサイトのように、Git / Github管理で OSSのsemantic-releaseを使って、バージョン管理を自動化できる
https://qiita.com/komtaki/items/d89451aea1b146ca83d6
関連記事
Git ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/06/29/104028
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652