diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css index 971e6afc..042e3547 100644 --- a/.vitepress/theme/style.css +++ b/.vitepress/theme/style.css @@ -13,6 +13,10 @@ #fff 30%, #e5004f ); + /* 背景が透過である画像が、ダークモードで視認性が下がるための対応 */ + .img-bg-transparent img { + filter: invert(1); + } } /* ヒーロー画像を透過させる */ diff --git a/documents/forGitBranch/git_branch_standards.md b/documents/forGitBranch/git_branch_standards.md index 483ee2ac..5b25dd92 100644 --- a/documents/forGitBranch/git_branch_standards.md +++ b/documents/forGitBranch/git_branch_standards.md @@ -70,8 +70,12 @@ Gitリポジトリを新規作成するとデフォルトで作成されるブ - ひとつの変更に対してひとつのfeatureブランチを作成し、作業完了後に削除するため、開発中で最も使われる短命なブランチである - 基本的に1人の開発者のみが利用する +
+ ![feature branch](img/branch_strategy_feature.drawio.png) +
+ 以下の命名に従う。 - `feature/` のプレフィックスを付ける @@ -92,8 +96,12 @@ fixtypo 開発の中心となるブランチである。 +
+ ![develop branch](img/branch_strategy_develop.drawio.png) +
+ ## releaseブランチ リリースするために使用するブランチで、主な特徴は以下である。 @@ -102,8 +110,12 @@ fixtypo - releaseブランチではバグ修正、ドキュメント生成、その他のリリースに伴うタスクのみを実施する - mainブランチのマージコミットにリリースタグを打ち、mainブランチをdevelopブランチへマージ後、releaseブランチを削除する +
+ ![release branch](img/branch_strategy_release.drawio.png) +
+ ## hotfixブランチ 本番リリースに対して迅速にパッチを当てて修正する場合に使用するブランチで、主な特徴は以下である。 @@ -111,8 +123,12 @@ fixtypo - 修正が完了するとmainとdevelopの両方(あるいは進行中のreleaseブランチ)にマージされる - main/developブランチがあると必要になる可能性がある。main/featureブランチのみの運用では必須ではない(管理上の目的でfeatureとhotfixを分けることはあり得る) +
+ ![hotfix branch](img/branch_strategy_hotfix.drawio.png) +
+ ## topicブランチ featureブランチで実現する機能を複数人で開発する場合に使用するブランチである。 @@ -120,8 +136,12 @@ featureブランチで実現する機能を複数人で開発する場合に使 - topicブランチが必要なケースでは、featureブランチへの直接プッシュを行ってはならない - GitHub Flowではfeatureブランチのことをtopicブランチと呼称する場合があるが、本規約ではfeatureブランチから派生するブランチをtopicブランチと定義する +
+ ![topic branch](img/branch_strategy_topic.drawio.png) +
+ # ブランチ戦略の選定 ブランチ戦略は以下の方針で選定する。 @@ -163,8 +183,12 @@ featureブランチで実現する機能を複数人で開発する場合に使 ## 1. developブランチを複数作成する場合 +
+ ![multi develop branch](img/branch_strategy_multi_develop.drawio.png) +
+ 日々のエンハンス開発と並行して、数カ月後に大型リリースを行いたい場合がある。このときは複数リリースバージョンを並行して開発するため、 `develop`、`develop2` といった複数のdevelopブランチを作る必要がある。 概要: @@ -178,8 +202,12 @@ featureブランチで実現する機能を複数人で開発する場合に使 - 誤操作を避ける目的でcherry-pickは行わない - `devleop2` への同期は、 `develop` -> `main` ブランチに反映されるタイミングで同期を行う(これにより、品質保証済みの変更のみ取り入れることができる) +
+ ![release multi develop branch](img/branch_strategy_release_multi_develop.drawio.png) +
+ ### develop2のリリース手順 1. `develop`から`develop2`へマージコミットする(2でコンフリクトが起こらないよう、前準備の意味合いで実施する。) @@ -193,8 +221,12 @@ featureブランチで実現する機能を複数人で開発する場合に使 ## 2. 過去バージョンをサポートする場合 +
+ ![multi version branch](img/branch_strategy_multi_version.drawio.png) +
+ (社内外の)ライブラリでインターフェースの大型改善や仕様変更を受けて、メジャーバージョンを1→2に上げることがる。この時に過去バージョンもサポートする必要があると、バージョン別にsupportブランチを作成する。 概要: @@ -228,10 +260,10 @@ developブランチの変更をfeatureブランチに取り込む方法には、 機能ブランチに対して開発ブランチの変更を取り込む方法は「マージ」「リベース」2つの方法が考えられる。 -| 1. マージコミット | 2. リベース | -| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| ![マージ](img/merge_strategy_develop_to_feature_merge.drawio.png) | ![リベース](img/merge_strategy_develop_to_feature_rebase.drawio.png) | -| `get fetch & git merge`(≒ `git pull`)。マージコミットが作成される | `get fetch & git rebase`(≒ `git pull --rebase`)。最新の開発ブランチの先頭から新たにコミットを作りなされ、マージコミットは作成されない | +| 1. マージコミット | 2. リベース | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +|
![マージ](img/merge_strategy_develop_to_feature_merge.drawio.png)
|
![リベース](img/merge_strategy_develop_to_feature_rebase.drawio.png)
| +| `get fetch & git merge`(≒ `git pull`)。マージコミットが作成される | `get fetch & git rebase`(≒ `git pull --rebase`)。最新の開発ブランチの先頭から新たにコミットを作りなされ、マージコミットは作成されない | 本規約の推奨は「2. リベース」である。 @@ -325,12 +357,12 @@ Terraformはplanが成功しても、applyが失敗することは多々あり developブランチにfeatureブランチの変更を取り込む方法は下表のように3パターン存在する。 -| | 1.マージコミット | 2.リベース | 3.スカッシュマージ | -| ---- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| 名称 | Create a merge commit | Rebase and merge | Squash and merge | -| 流れ | ![Merge Commit](img/merge_strategy_feature_to_develop_merge_commit.drawio.png) | ![Rebase and Merge](img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png) | ![Squash and Merge](img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png) | -| 説明 | `git merge --no-ff` で変更を取り込む | featureブランチを最新のdevelopブランチにリベースし、`git merge --ff` で変更を取り込む | `git merge --squash` で変更を取り込む | -| 特徴 | developブランチにマージコミットが作成される | マージコミットは作成されず、履歴が一直線になる | featureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される | +| | 1.マージコミット | 2.リベース | 3.スカッシュマージ | +| ---- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| 名称 | Create a merge commit | Rebase and merge | Squash and merge | +| 流れ |
![Merge Commit](img/merge_strategy_feature_to_develop_merge_commit.drawio.png)
|
![Rebase and Merge](img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png)
|
![Squash and Merge](img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png)
| +| 説明 | `git merge --no-ff` で変更を取り込む | featureブランチを最新のdevelopブランチにリベースし、`git merge --ff` で変更を取り込む | `git merge --squash` で変更を取り込む | +| 特徴 | developブランチにマージコミットが作成される | マージコミットは作成されず、履歴が一直線になる | featureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される | ::: tip GitLabを利用する場合 @@ -338,11 +370,11 @@ GitLabでも開発ブランチに機能ブランチの変更を取り込む方 ただし、マージリクエスト上のオプションによってコミット履歴が変わる点が注意である。 -| | 1. Merge commit | 2. Merge commit with semi-linear history | 3. Fast-forward merge | -| ---- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| 流れ | ![Merge commit with squash commits](img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png) | 省略 | 省略 | -| 説明 | GitHubにおける `Create a merge commit` と同様のマージ方法 | `Merge commit` と同じコマンドを使用して、機能ブランチの変更を取り込む方法 | GitHubにおける `Rebase and merge` と同様のマージ方法 | -| 注意 | `Squash commits` を選択してマージした場合、`squash commit` と `merge commit` の2つのコミットが作成される | ソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。 | マージリクエスト上で `Squash commits` を選択してマージした場合、GitHubにおける `Squash and merge` と同様のマージ方法になる(※補足1) | +| | 1. Merge commit | 2. Merge commit with semi-linear history | 3. Fast-forward merge | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| 流れ |
![Merge commit with squash commits](img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png)
| 省略 | 省略 | +| 説明 | GitHubにおける `Create a merge commit` と同様のマージ方法 | `Merge commit` と同じコマンドを使用して、機能ブランチの変更を取り込む方法 | GitHubにおける `Rebase and merge` と同様のマージ方法 | +| 注意 | `Squash commits` を選択してマージした場合、`squash commit` と `merge commit` の2つのコミットが作成される | ソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。 | マージリクエスト上で `Squash commits` を選択してマージした場合、GitHubにおける `Squash and merge` と同様のマージ方法になる(※補足1) | (※補足1)マージ方法で Merge commit を選択して、マージリクエスト上で Squash commits オプションを選択してマージした場合は以下と同義である @@ -418,8 +450,12 @@ git merge --no-ff $SOURCE_SHA - issue-312のリリースは業務上の合意が得られていない(エンドユーザ操作に影響があるため、事前告知した日時でリリースしたいなど) - issue-394は不具合修正であり業務上の優先度が高いため、なるべく早くリリースしたい +
+ ![同一ファイルを複数](img/release_overtaking.drawio.png) +
+ よく陥りがちな対策としては次の2点が考えられる。 1. issue-312をリバートする @@ -437,8 +473,12 @@ git merge --no-ff $SOURCE_SHA 2の例を以下に図示する +
+ ![hotfixで追い抜き](img/release_overtaking_hotfix.drawio.png) +
+ # ブランチ命名規則 ブランチ名の命名規則は、[ブランチの種類](#ブランチの種類) 章に従うこと。 diff --git a/documents/forGitBranch/img/branch_strategy_develop.drawio.png b/documents/forGitBranch/img/branch_strategy_develop.drawio.png index 5bb16245..81b0dc88 100644 Binary files a/documents/forGitBranch/img/branch_strategy_develop.drawio.png and b/documents/forGitBranch/img/branch_strategy_develop.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_feature.drawio.png b/documents/forGitBranch/img/branch_strategy_feature.drawio.png index e306953f..bd503ec5 100644 Binary files a/documents/forGitBranch/img/branch_strategy_feature.drawio.png and b/documents/forGitBranch/img/branch_strategy_feature.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_hotfix.drawio.png b/documents/forGitBranch/img/branch_strategy_hotfix.drawio.png index 39a1bd3c..37b4cccb 100644 Binary files a/documents/forGitBranch/img/branch_strategy_hotfix.drawio.png and b/documents/forGitBranch/img/branch_strategy_hotfix.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_multi_develop.drawio.png b/documents/forGitBranch/img/branch_strategy_multi_develop.drawio.png index a4a88760..70657692 100644 Binary files a/documents/forGitBranch/img/branch_strategy_multi_develop.drawio.png and b/documents/forGitBranch/img/branch_strategy_multi_develop.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_multi_version.drawio.png b/documents/forGitBranch/img/branch_strategy_multi_version.drawio.png index 49031af0..47e46d3f 100644 Binary files a/documents/forGitBranch/img/branch_strategy_multi_version.drawio.png and b/documents/forGitBranch/img/branch_strategy_multi_version.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_release.drawio.png b/documents/forGitBranch/img/branch_strategy_release.drawio.png index 53e3a895..e77e8d71 100644 Binary files a/documents/forGitBranch/img/branch_strategy_release.drawio.png and b/documents/forGitBranch/img/branch_strategy_release.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_release_multi_develop.drawio.png b/documents/forGitBranch/img/branch_strategy_release_multi_develop.drawio.png index cf27ef0c..fa87e2bf 100644 Binary files a/documents/forGitBranch/img/branch_strategy_release_multi_develop.drawio.png and b/documents/forGitBranch/img/branch_strategy_release_multi_develop.drawio.png differ diff --git a/documents/forGitBranch/img/branch_strategy_topic.drawio.png b/documents/forGitBranch/img/branch_strategy_topic.drawio.png index 4624495d..2b7daf1b 100644 Binary files a/documents/forGitBranch/img/branch_strategy_topic.drawio.png and b/documents/forGitBranch/img/branch_strategy_topic.drawio.png differ diff --git a/documents/forGitBranch/img/lightweight_gitbranch_flow.drawio.png b/documents/forGitBranch/img/lightweight_gitbranch_flow.drawio.png index 3a23fb15..bfe151ee 100644 Binary files a/documents/forGitBranch/img/lightweight_gitbranch_flow.drawio.png and b/documents/forGitBranch/img/lightweight_gitbranch_flow.drawio.png differ diff --git "a/documents/forGitBranch/img/lightweight_gitbranch_flow_\345\220\214\346\234\237.drawio.png" "b/documents/forGitBranch/img/lightweight_gitbranch_flow_\345\220\214\346\234\237.drawio.png" index 58128081..c0572495 100644 Binary files "a/documents/forGitBranch/img/lightweight_gitbranch_flow_\345\220\214\346\234\237.drawio.png" and "b/documents/forGitBranch/img/lightweight_gitbranch_flow_\345\220\214\346\234\237.drawio.png" differ diff --git a/documents/forGitBranch/img/merge_strategy_develop_to_feature.drawio.png b/documents/forGitBranch/img/merge_strategy_develop_to_feature.drawio.png index cc52ed7e..cf22db9f 100644 Binary files a/documents/forGitBranch/img/merge_strategy_develop_to_feature.drawio.png and b/documents/forGitBranch/img/merge_strategy_develop_to_feature.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_develop_to_feature_merge.drawio.png b/documents/forGitBranch/img/merge_strategy_develop_to_feature_merge.drawio.png index 8caee65d..13ee6282 100644 Binary files a/documents/forGitBranch/img/merge_strategy_develop_to_feature_merge.drawio.png and b/documents/forGitBranch/img/merge_strategy_develop_to_feature_merge.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_develop_to_feature_rebase.drawio.png b/documents/forGitBranch/img/merge_strategy_develop_to_feature_rebase.drawio.png index 40acf6e9..415231d0 100644 Binary files a/documents/forGitBranch/img/merge_strategy_develop_to_feature_rebase.drawio.png and b/documents/forGitBranch/img/merge_strategy_develop_to_feature_rebase.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_feature_to_develop_merge_commit.drawio.png b/documents/forGitBranch/img/merge_strategy_feature_to_develop_merge_commit.drawio.png index d5aa95ce..dee061da 100644 Binary files a/documents/forGitBranch/img/merge_strategy_feature_to_develop_merge_commit.drawio.png and b/documents/forGitBranch/img/merge_strategy_feature_to_develop_merge_commit.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png b/documents/forGitBranch/img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png index 27f9b78e..a57b23fa 100644 Binary files a/documents/forGitBranch/img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png and b/documents/forGitBranch/img/merge_strategy_feature_to_develop_rebase_and_merge.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png b/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png index ac8b2baa..54ac3816 100644 Binary files a/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png and b/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge.drawio.png differ diff --git a/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png b/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png index 558f73f7..cb99f085 100644 Binary files a/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png and b/documents/forGitBranch/img/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.png differ diff --git a/documents/forGitBranch/img/release_overtaking.drawio.png b/documents/forGitBranch/img/release_overtaking.drawio.png index 3da65510..32fef1a8 100644 Binary files a/documents/forGitBranch/img/release_overtaking.drawio.png and b/documents/forGitBranch/img/release_overtaking.drawio.png differ diff --git a/documents/forGitBranch/img/release_overtaking_hotfix.drawio.png b/documents/forGitBranch/img/release_overtaking_hotfix.drawio.png index 99749210..b2e76709 100644 Binary files a/documents/forGitBranch/img/release_overtaking_hotfix.drawio.png and b/documents/forGitBranch/img/release_overtaking_hotfix.drawio.png differ diff --git a/documents/forGitBranch/outline_gitflow.drawio.svg b/documents/forGitBranch/outline_gitflow.drawio.svg new file mode 100644 index 00000000..23d13d53 --- /dev/null +++ b/documents/forGitBranch/outline_gitflow.drawio.svg @@ -0,0 +1,333 @@ + + + + + + + + + +
+
+
+ main +
+
+
+
+ + main + +
+
+ + + + + +
+
+
+ hotfix +
+
+
+
+ + hotfix + +
+
+ + + + + + + + + + + + +
+
+
+ develop +
+
+
+
+ + develop + +
+
+ + + + + + + + +
+
+
+ feature +
+
+
+
+ + feature + +
+
+ + + + +
+
+
+ Tag: 1.0.0 +
+
+
+
+ + Tag: 1.0.0 + +
+
+ + + + + +
+
+
+ Tag: 1.1.0 +
+
+
+
+ + Tag: 1.1.0 + +
+
+ + + + + +
+
+
+ Tag: 1.0.1 +
+
+
+
+ + Tag: 1.0.1 + +
+
+ + + + + +
+
+
+ release +
+
+
+
+ + release + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Tag: 1.2.0 +
+
+
+
+ + Tag: 1.2.0 + +
+
+ + + + + + + + + +
+
+
+ リリース後の重大なバグ修正 +
+
+
+
+ + リリース後の重大なバグ修正 + +
+
+ + + + +
+
+
+ 1.1.0に向けた開発 +
+
+
+
+ + 1.1.0に向けた開発 + +
+
+ + + + +
+
+
+ 1.2.0に向けた開発 +
+
+
+
+ + 1.2.0に向けた開発 + +
+
+ + + + +
+
+
+ 1.1.0に向けた +
+ リリースブランチ +
+
+
+
+ + 1.1.0に向けた... + +
+
+ + + + +
+
+
+ リリースブランチ作成後の +
+ バグ修正はリリースブランチでおこなう +
+
+
+
+ + リリースブランチ作成後の +バグ修正はリリースブランチでおこなう + +
+
+ + + + +
+
+
+ バグ修正した内容を値都度developに取り込む +
+
+
+
+ + バグ修正した内容を値都度developに取り込む + +
+
+
+ + + + + Text is not SVG - cannot display + + + +