【Git】Semantic Versioning / Conventional Commits

◾️はじめに

 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)の付け方の規約

https://semver.org/lang/ja/

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