ブランチの自動マージ
Bitbucket Server では、変更を新しいリリース ブランチに自動的にマージし、ブランチを手動でメンテナンスする必要を削減することができます。このページでは、自動ブランチ マージに役立つブランチ戦略を確立するためのベスト プラクティスと、個々のリポジトリまたはプロジェクト内のすべてのリポジトリでそれらを有効にする方法について説明します。
自動マージのための条件
On this page:
自動ブランチ マージを使用するには、Bitbucket Server でブランチの順序を判断できる必要があり、ブランチ名のセマンティック バージョニングに依存します。例えば、Bitbucket Server はこれらのブランチ名を次のような順序で並べます: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。このページで後述される、ブランチの並べ替えアルゴリズム (ブランチの並べ替えの例を含む) についてお読みください。Bitbucket Server は "development" ブランチ (一般的にデフォルトのブランチ) が常に任意の "release" ブランチの先にあることを想定しています。自動カスケードでの最終マージ先は "development" ブランチになります。
次の条件も満たす必要があります。
- ブランチ モデルが設定されていること。
- "release" ブランチ タイプが有効化されているか、"production" ブランチが設定されていること。
- "release" または "production" ブランチ タイプへのプル リクエストを使用してマージが作成されていること。
- プル リクエストのターゲット ブランチよりも新しいブランチがあること。
参考情報
- 自動マージはデフォルトでオフになっています。
- コミット メッセージにはマージが自動的に行われたことが示されます。
- 自動マージ用の監査ログ エントリがあります。
- マージが成功または失敗すると通知が送信されます。
自動マージに失敗するとどうなりますか?
自動マージに失敗した場合、Bitbucket Server は失敗したマージの新しいプル リクエストを作成し、自動マージ操作は停止します。新しい一連のカスケード マージが開始される可能性がある競合を、新しいマージを承認する前にローカルで解決する必要があります。マージが失敗した時に自動的にオープンされるプル リクエストは、ローカルで解決された場合、最初のマージ チェーンの続行をトリガーしません (これは推奨アプローチです)。
自動マージが失敗する理由はいくつかあります。
- マージの妨げになる競合が検出された
自動マージでクローズする、同じソースとターゲットのを持つオープンなプル リクエストがすでに存在する
自動ブランチ マージを有効にする
1 つのプロジェクトのすべてのリポジトリで自動ブランチ マージを有効にし、個々のリポジトリではこの設定を継承するかオーバーライドするかを選択できます。
1 つのプロジェクトのすべてのリポジトリで自動ブランチ マージを有効にする
1 つのプロジェクトのすべてのリポジトリで、自動ブランチ マージを含むブランチ モデルを継承またはオーバーライドできます。
1 つのプロジェクトのすべてのリポジトリで自動ブランチ マージを有効にする方法 (プロジェクト管理権限が必要)
- [プロジェクト設定] > [ブランチ モデル] に移動します。
- [自動マージを有効にする] を選択してから、[保存] をクリックします。
1 つのリポジトリで自動ブランチ マージを有効にする
1 つのリポジトリで自動ブランチ マージを有効にする方法
- [リポジトリ設定] > [ブランチ モデル] に移動します。
- [自動マージを有効にする] を選択してから、[保存] をクリックします。
ブランチの並べ替えアルゴリズム
Bitbucket Server でブランチの順序を決定できる場合、Bitbucket Server は、変更を新しいリリース ブランチに自動的にマージします。並べ替えはブランチの命名パターンのセマンティック バージョニングに基づいて行われます。
Bitbucket Server は次の並べ替えアルゴリズムを使用して、マージ チェーン内のブランチを判断します。
- ブランチは、カスケードを開始したブランチの名前 (マージのプル リクエストのターゲット) に基づいて選択および並べ替えられます。
- ブランチ名は次の任意の文字を使用してトークンに分割されます: アンダースコア (_)、ハイフン (-)、プラス (+)、またはピリオド (.)。
- プル リクエストのターゲットの名前に一致するブランチのみがマージ パスに追加されます。一致とは、最初の数値トークンよりも前のすべてのトークンが、ターゲット ブランチの名前の対応するトークンに等しいという意味です。
- 指定されたトークンが数値の場合、ブランチは番号順に並べられます。数値トークンを ASCII トークンと比較した場合、数値が上位にランクされます (新しいバージョンであるとみなされます)。
- 両方のトークンが数字ではない場合、シンプルな ASII 比較が使用されます。
- 上記のアルゴリズムで 2 つのブランチ名が等しくなった場合、ブランチ名全体でシンプルな文字列比較が実行されます。
- 30 マージの制限があります。
ブランチの並べ替えの例
以下の図は、Bitbucket Server で適切に並べ替え可能なブランチ命名パターンと、並べ替えに失敗するブランチ命名パターンの例を示しています。
GOOD |
| Bitbucket Server は "1.1-rc1" の "." および "-" をトークン化し、これらのブランチ名を正しく並べ替えることができます。 |
GOOD |
| Bitbucket Server は "." および "-" をトークン化し、これらのブランチ名の数値部分を正しく並べ替えることができます。 |
BAD |
| Bitbucket Server は "." と "_" をトークン化しますが、"bitbucket_1.1" が "1.0" のあとに来ることは認識できません。 |