Git リポジトリの設定とポリシーを設定する

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

ブランチとリポジトリの設定とポリシーを使用して、Azure Repos Git リポジトリをカスタマイズする方法はいくつかあります。 この記事では、リポジトリ レベルの設定とポリシーについて説明します。

  • リポジトリの設定とポリシーによって、プロジェクトまたは組織のすべての Git リポジトリ、あるいは個々のリポジトリのグローバル オプションが構成されます。

    この記事では、サーバー側リポジトリの設定とポリシーについて説明します。 クライアント側の Git の基本設定について詳しくは、Visual Studio での Git の基本設定と設定に関する記事を参照してください。

  • ブランチ ポリシーは、ブランチ固有の制御に対応します。

    ブランチ ポリシーには、変更をブランチにマージする前に、pull request、ビルドの成功、またはコードのレビューを必須とするなどのオプションが含まれます。 詳細については、ブランチのポリシーと設定に関する記事を参照してください。

  • リポジトリとブランチのセキュリティ アクセス許可により、ユーザーの割り当てが制御されます。

    これらのアクセス許可により、pull request の読み取り、書き込み、pull request への参加、およびその他の特定のアクションを実行できるユーザーが制御されます。 詳細については、リポジトリのアクセス許可の設定に関する記事を参照してください。

すべてのリポジトリおよびブランチの設定とポリシーの概要

プロジェクトのすべてのリポジトリ、個々のリポジトリ、リポジトリのブランチに対して設定とポリシーを構成できます。 ブラウザーで、[プロジェクトの設定]>[リポジトリ] を使用して、これらのすべての設定とポリシーを構成します。

注意

Azure CLI で az repos policy を使用して、ブランチの複数の設定とポリシーを設定できます。

次の表に、Git リポジトリとブランチに対して有効にして構成できる設定とポリシーをまとめます。

すべてのリポジトリの設定

次の表に、プロジェクトまたは組織のすべての新しい Git リポジトリに対して有効にして構成できる設定をまとめます。

設定

[Default]

説明


オフ

指定した既定のブランチ名で新しいリポジトリを初期化します。 特定のリポジトリの既定のブランチはいつでも変更できます。 この機能を有効にしない場合、リポジトリは main という名前の既定のブランチを使用して初期化されます。

オン

新しいすべてのリポジトリで作成されたブランチのアクセス許可をユーザーが管理できるようにします。

リポジトリ設定

次の表に、個々の Git リポジトリに対して有効にして構成できる設定をまとめます。

設定

[Default]

説明


オン

ユーザーがリポジトリからフォークを作成できるようにします。

オン

コミット コメント内でメンションされた作業項目のリンクを自動的に作成します。

オン

コミット コメント内でのメンションで作業項目を閉じることができるようにします。 Azure DevOps Server 2020.1 更新プログラム以降のバージョンが必要です。

オン

pull request で作業項目を完了するためのユーザー設定を記憶します。

オン

ユーザーが作成したブランチのアクセス許可をユーザーが管理できるようにします

オン

リポジトリの [Strict Vote Mode] (厳密な投票モード) を有効にします。これにより、pull request で投票するために投稿アクセス許可が必須となります。

オン

リポジトリへのアクセス (ビルド、pull request を含む) を無効にします。ただし、リポジトリは検出可能な状態が維持され、警告が表示されます。

オン

コード検索に含める追加ブランチを最大 5 つ指定します。既定では、コード検索は既定のブランチにのみ適用されます。 Code Search 拡張機能がインストールされ、有効化されている必要があります。

リポジトリのポリシーまたはオプション

次の表に、すべてのリポジトリまたは個々のリポジトリに対して設定できるポリシーまたはオプションをまとめます。 [すべてのリポジトリ] に設定したポリシーによって、後日追加した個々のリポジトリの既定値が設定されます。

ポリシーまたはオプション

[Default]

説明


オフ

指定したパターンに一致しないコミット作成者の電子メールを含むプッシュをブロックします。 この設定には、Azure DevOps Server 2020.1 以降のバージョンが必要です。

オフ

指定したパターンに一致するファイル パスを導入するプッシュをブロックします。 この設定には、Azure DevOps Server 2020.1 以降のバージョンが必要です。

オフ

ファイル、フォルダー、ブランチ、タグの名前の大文字と小文字を変更するプッシュをブロックして、大文字と小文字の区別による競合を回避します。

オフ

プラットフォームの予約済みの名前または互換性のない文字を含むファイル名、フォルダー名、またはブランチ名を導入するプッシュをブロックします。

オフ

指定した長さを超えるパスを導入するプッシュをブロックします。

オフ

選択した制限を上回るサイズの新規ファイルまたは更新ファイルが含まれるプッシュをブロックします。

ブランチ ポリシー

次の表に、ブランチをカスタマイズするために定義できるポリシーをまとめます。 これらの設定の構成について詳しくは、「ブランチ ポリシーを使用してコードの品質を改善する」を参照してください。 ブランチにポリシーを設定すると、次のポリシーが自動的に適用されます。

  • ブランチを更新するには、pull request が必須となります。
  • ブランチを削除できなくなります。

Note

ブランチ ポリシーは、プル要求のターゲット ブランチに基づいてプル要求に適用されます。 プル要求後に削除される一時ブランチでは、ブランチ ポリシーを設定しないでください。 ブランチ ポリシーを一時ブランチに追加すると、ブランチの自動削除に失敗します。

ポリシー

[Default]

説明


オフ

pull request 時に、指定した人数のレビュー担当者からの承認を必須とします。

オフ

pull request 時に、リンクされた作業項目を確認して、追跡可能性を強化します。

オフ

pull request 時に、すべてのコメントが解決したことを確認します。

オフ

pull request が完了した際に使用できるマージの種類を制限することでブランチ履歴を制御します。

オフ

1 つ以上のポリシーを追加、有効、または無効にして、pull request の変更を事前にマージしてビルドすることでコードを検証します。

オフ

1 つ以上のポリシーを追加、有効、または無効にして、pull request を完了するために、他のサービスが成功状態を投稿することを必須とします。

オフ

1 つ以上のポリシーを追加、有効、または無効にして、pull request がコードの特定の領域を変更するときに、コード レビュー担当者が自動的に追加されるように指定します。

前提条件

  • ポリシーを構成するには、プロジェクト管理者セキュリティ グループのメンバーであるか、リポジトリ レベルの [ポリシーの編集] アクセス許可を持っている必要があります。 詳細については、「Git リポジトリのアクセス許可を設定する」を参照してください。
  • az repos コマンドを使用する場合は、「Azure DevOps CLI の概要」の手順に従ってください。
  • ポリシーを構成するには、プロジェクト管理者セキュリティ グループのメンバーであるか、リポジトリ レベルの [ポリシーの編集] アクセス許可を持っている必要があります。 詳細については、「Git リポジトリのアクセス許可を設定する」を参照してください。

設定とポリシーを表示して編集する

組織またはプロジェクトのすべてのリポジトリ、あるいは個々のリポジトリの "設定" を構成できます。 すべてのリポジトリ、個々のリポジトリ、またはリポジトリの指定したブランチに対して "ポリシー" を構成できます。 ブランチ ポリシーの設定について詳しくは、「ブランチ ポリシー」を参照してください。

注意

リポジトリの設定は、プロジェクト レベルと個々のリポジトリの両方で構成するのではなく、これらのどちらか一方で構成することをお勧めします。 複数のレベルで設定を構成した場合、システムは最も制限が厳しい設定を優先します。 1 つのレベルだけで設定を構成すると、混乱せずに済みますし、Git のパフォーマンスの問題も軽減されます。

Web ポータルを使用してリポジトリの設定とポリシーを構成するには、Web ブラウザーから [プロジェクトの設定]>[リポジトリ] を開きます。

  1. すべての Git リポジトリの設定またはポリシーを表示または変更するには、[すべてのリポジトリ] ページを開き、[設定] または [ポリシー] を選択します。

    すべてのリポジトリのリポジトリ設定を示すスクリーンショット

    特定のリポジトリの設定とポリシーを構成するには、[リポジトリ] タブを選択し、リポジトリを選択し、[設定] または [ポリシー] タブを選択します。

    Fabrikam リポジトリのリポジトリ設定を示すスクリーンショット。

  2. 次のスクリーンショットでは、[設定] タブが選択されています。 これらの設定は、すべての Git リポジトリに対して、または個々のリポジトリに対して定義できます。

    リポジトリ プロジェクトの [設定] タブが選択されていることを示すスクリーンショット。

  3. 次のスクリーンショットでは、[ポリシー] タブが選択されています。 これらのポリシーは、すべての Git リポジトリに対して、または個々のリポジトリに対して定義できます。

    リポジトリの [ポリシー] タブが選択されていることを示すスクリーンショット。

  1. Web ブラウザーからプロジェクトを開き、[プロジェクトの設定][リポジトリ] の順に選択し、リポジトリを選択します。

    リポジトリの [プロジェクトの設定] のスクリーンショット。

  2. リポジトリの設定を表示して構成するには、[オプション] または [ポリシー] を選択します。

    次のスクリーンショットは、すべてのリポジトリの [オプション] を示しています。

    すべてのリポジトリの [オプション] のスクリーンショット。

    次のスクリーンショットは、Fabrikam リポジトリの [オプション] を示しています。

    Fabrikam リポジトリの [オプション] のスクリーンショット。

既定のブランチ名

既定のリポジトリ ブランチ名は、組織レベルまたはプロジェクト レベルで設定できます。 組織レベルの設定は、組織のすべてのプロジェクトのすべての新しいリポジトリに対して有効になります。 プロジェクト レベルの設定は、プロジェクトのすべての新しいリポジトリに影響し、組織レベルで設定された名前よりも優先されます。

次の操作を行います。

  • リポジトリの初期化時に使用する有効なブランチ名を選択できます。
  • 既定の名前はいつでも変更でき、将来のすべてのリポジトリに反映させることができます。
  • 特定のリポジトリの既定のブランチ名はいつでも変更できます。

既定のブランチ名機能を有効にしない場合、リポジトリは、Azure Repos の既定のブランチ名 main で初期化されます。

組織レベルで既定のブランチ名を設定するには:

  1. Azure DevOps 組織ページで、左下にある [組織の設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページで、[Default branch name for new repositories] (新しいリポジトリの既定のブランチ名)[オン] に設定し、既定のブランチ名を入力します。

新しいリポジトリの既定ブランチ名の組織レベル設定を示すスクリーンショット。

プロジェクト レベルで既定のブランチ名を設定するには:

  1. Azure DevOps プロジェクト ページで、左下にある [プロジェクトの設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページの [設定] タブで、[Default branch name for new repositories] (新しいリポジトリの既定のブランチ名)[オン] に設定し、既定のブランチ名を入力します。

新しいリポジトリの既定ブランチ名のプロジェクト レベル設定を示すスクリーンショット。

注意

[Default branch name for new repositories] (新しいリポジトリの既定のブランチ名) 設定には、Azure DevOps Server 2020.1 以降のバージョンが必要です。

ブランチのアクセス許可の管理

すべての Git リポジトリまたは個々のリポジトリのアクセス許可管理設定を設定することで、リポジトリ ブランチのアクセス許可を管理できるユーザーを制御できます。 [すべてのリポジトリ] レベルで [作成されたブランチのアクセス許可の管理をユーザーに許可する] 設定を有効にすると、ユーザーが作成されたブランチのアクセス許可を管理できるように、新しいすべてのプロジェクト リポジトリが構成されます。

この設定を管理するには:

  1. Azure DevOps プロジェクト ページで、左下にある [プロジェクトの設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページの [設定] タブで、[作成されたブランチのアクセス許可の管理をユーザーに許可する][オン] または [オフ] に設定します。

プロジェクト レベルでの [作成されたブランチのアクセス許可の管理をユーザーに許可する] 設定を示すスクリーンショット。

個々のリポジトリに対してこの設定を有効または無効にするには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します。
  2. <リポジトリ名> ページの [設定] タブで、[アクセス許可の管理][オン] または [オフ] に設定します。

リポジトリの [アクセス許可の管理] 設定を示すスクリーンショット。

Gravatar イメージ

この設定は、企業外のユーザーに対する Gravatar イメージの使用を有効または無効にします。

[Gravatar イメージ] は組織レベルの設定です。

  1. Azure DevOps 組織ページで、左下にある [組織の設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページで、[Gravatar イメージ][オン] または [オフ] に設定します。

Gravatar イメージの組織レベルの設定を示すスクリーンショット。

[Gravatar イメージ] は、[すべてのリポジトリ] のプロジェクト レベルの設定です。

  1. Azure DevOps プロジェクト ページで、左下にある [プロジェクトの設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページの [設定] タブで、[Gravatar イメージ][オン] または [オフ] に設定します。

[Gravatar イメージ] は、[すべてのリポジトリ] のプロジェクト レベルの設定です。

  1. Azure DevOps プロジェクト ページで、左下にある [プロジェクトの設定] を選択し、左側のナビゲーションで [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページの [設定] タブで、[Gravatar イメージ][オン] または [オフ] に設定します。

フォークを有効にする

このリポジトリ設定は、ユーザーが新しいサーバー側フォークを作成できるかどうかを制御します。 この設定を無効にしても、既存のフォークは削除されません。

  1. [プロジェクトの設定] で、左側のナビゲーションから [リポジトリ] を選択します。
  2. [すべてのリポジトリ] ページの [リポジトリ] タブで、リポジトリを選択します。
  3. <リポジトリ名> ページの [設定] タブで、[フォーク][オン] または [オフ] に設定します。

リポジトリの [フォーク] 設定を示すスクリーンショット。

作業項目リンクの設定

これらのリポジトリ設定は、作業項目リンクを管理します。

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します。
  2. <リポジトリ名> ページの [設定] タブで、設定を [オン] または [オフ] にします。

リポジトリの作業項目リンク設定を示すスクリーンショット。

リンクのメンションをコミットする

有効にすると、# の後に有効な作業項目 ID が続くコミット メッセージで、コミットがその作業項目に自動的にリンクされます。 リポジトリで以前に別のアカウントまたはサービスが使用されていた場合、この設定を無効にします。 これらのリポジトリでは、現在のアカウントの作業項目 ID と一致しない # メンションを含むコミット メッセージが存在する可能性があります。

作業項目の解決のメンションをコミットする

リンクされた pull request が完了したときに作業項目を自動的に完了するには、この設定を有効にします。 またこの設定により、pull request コミット メッセージで他の作業項目の移行状態を指定できるようになります。 詳細については、「プル要求で作業項目を自動的に完了する」を参照してください。

作業項目の解決のメンションをコミットする

PR が正常に完了したときに、これらの作業項目を自動的に完了するには、この設定を有効にします。 詳細については、「プル要求で作業項目を自動的に完了する」を参照してください。

作業項目の移行の設定

既定では、pull request の完了時にリンクされた作業項目を完了するオプションでは、各ユーザーの最後の選択が記憶されます。 ユーザーが pull request を使用して作業項目を完了することを推奨していないチームでは、この設定を無効にできます。 その後、ユーザーは pull request を完了するたびに作業項目の完了をオプトインする必要があります。

厳密な投票モードの設定

特定の状況では、リポジトリの共同作成者ではないユーザーが pull request を送信し、ポリシーに応じてそれがマージされる可能性があります。 この可能性をなくすには、[Strict Vote Mode] (厳密な投票モード) を有効にして、リポジトリの pull request を投票するために必要なアクセス許可を [Contribute] (投稿) に変更します。 Azure Repos でユーザー フォークに依存している場合は、この設定を有効にすることをお勧めします。

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します。
  2. <リポジトリ名> ページの [設定] タブで、[Strict Vote Mode] (厳密な投票モード)[オン] または [オフ] に設定します。

リポジトリの [Strict Vote Mode] (厳密な投票モード) 設定を示すスクリーンショット。

[リポジトリの無効化] 設定

この設定を有効にすると、リポジトリへのアクセス (ビルドと pull request を含む) は無効になりますが、リポジトリは検出可能な状態が維持され、警告が表示されます。

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します。
  2. <リポジトリ名> ページの [設定] タブの [リポジトリの無効化] で、[リポジトリの無効化][オン] または [オフ] に設定します。

[リポジトリの無効化] 設定を示すスクリーンショット。

[検索可能なブランチ] 設定

既定では、ファイル内のコード検索は既定のブランチにのみ適用されます。 検索するブランチを最大 5 つ追加できます。

重要

リポジトリ内のコードを検索するには、Marketplace の Code Search 拡張機能をインストールする必要があります。 リポジトリの [設定] タブに [検索可能なブランチ] が表示されない場合、この拡張機能がインストールされていることを確認してください。

コード検索するブランチを追加するには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します。
  2. <リポジトリ名> ページの [設定] タブの [検索可能なブランチ] で、+ を選択します。
  3. 検索に含めるブランチを選択し、[ブランチの追加] を選択します。

リポジトリの [検索可能なブランチ] 設定を示すスクリーンショット。

リポジトリ間ブランチ ポリシー

プロジェクトのすべてのリポジトリにわたって、特定のブランチ名または既定のブランチに対してポリシーを設定できます。 たとえば、すべてのプロジェクト リポジトリのすべての main ブランチのすべての pull request に対して、最低 2 名のレビュー担当者を必須にすることができます。

プロジェクト全体で特定のブランチ名または既定のブランチ名を保護するポリシーを設定するには:

  1. [プロジェクトの設定] で、左側のナビゲーションから [リポジトリ] を選択します。

  2. [すべてのリポジトリ] ページで、[ポリシー] タブを選択します。

  3. ページの下部にある [ブランチ ポリシー] で、プラス記号 + を選択します。

  4. [ブランチ保護の追加] 画面で、[各リポジトリの既定のブランチを保護する] または [指定したパターンに一致する現在および将来のブランチを保護する] を選択します。

    2 番目のオプションを選択した場合は、保護するブランチの名前を入力します。 情報メッセージにより、影響を受ける現在のブランチの数を確認できます。 ブランチ名を保護するために、ブランチがまだ存在していなくてもかまいません。

  5. [作成] を選択します

    リポジトリ間ブランチ ポリシーの有効化を示すスクリーンショット。

  6. [<ブランチ名> のリポジトリ間ポリシー] ページで、保護するブランチに必要なポリシーを設定します。 ブランチ ポリシーについて詳しくは、「ブランチ ポリシー」を参照してください。

    リポジトリ間ブランチ ポリシーの設定を示すスクリーンショット。

コミット作成者の電子メールの検証ポリシー

このポリシーでは、コミット作成者の電子メール アドレスがパターンと一致しない場合に、そのコミット作成者によるリポジトリへのコミットがブロックされます。

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。

  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[コミット作成者の電子メールの検証][オン] または [オフ] に設定します。

  3. このポリシーを有効にする場合、マッチングさせる 1 つ以上の電子メール アドレスを指定します。

    具体的な電子メール アドレスを指定することも、ワイルドカードを使用することもできます。 複数の電子メール パターンの区切り記号として ; を使用します。 先頭に ! が付加された電子メール パターンは除外されます。 順序が重要です。

コミット作成者の電子メールの検証ポリシーの設定を示すスクリーンショット。

ファイル パスの検証ポリシー

パターンに一致するファイル パスからリポジトリーにコミットするのを禁止するポリシーを設定できます。

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。

  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[ファイル パスの検証][オン] または [オフ] に設定します。

  3. このポリシーを有効にする場合、ブロックする 1 つ以上のパスを指定します。

    具体的なパスとワイルドカードを指定できます。 具体的なパスは / で始めます。 ; を区切り記号として使用して複数のパスも指定できます。 先頭に ! が付加されたパスは除外されます。 順序が重要です。

ファイル パスの検証ポリシーの設定を示すスクリーンショット。

大文字と小文字の区別の強制ポリシー

Git では大文字と小文字が区別されます。したがって、Foo.txt というファイルと foo.txt というファイルは異なります。 ただし、Windows と macOS は、既定では大文字と小文字が区別されないファイル システムです。したがって、Foo.txtfoo.txt は同じ名前です。 この不一致により、大文字と小文字が区別されないシステムのユーザーが、大文字と小文字のみが異なるファイル、フォルダー、ブランチ、またはタグをプッシュすると、問題が発生する可能性があります。 詳細については、「Git クロスプラットフォームの互換性」を参照してください。

ほとんどの共同作成者が Windows または macOS を使用している場合、[大文字と小文字の区別の強制] ポリシーを有効にすることをお勧めします。 [大文字と小文字の区別の強制] により、File.txtfile.txt が異なるファイルと見なされる、既定の大文字と小文字を区別するモードから、File.txtfile.txt が同じファイルと見なされる、Windows と macOS に対応したモードにサーバーが切り替わります。 この設定は、ファイル、フォルダー、ブランチ、タグに適用されます。

この設定により、共同作成者は大文字と小文字のみ違う名前を使用できなくなります。 この設定により、ファイル、フォルダー、ブランチ、タグの名前の大文字と小文字を変更するプッシュがブロックされ、大文字と小文字の区別による競合が回避されます。 ユーザーは、未プッシュ履歴を書き換えて問題を解決し、もう一度プッシュを試す必要があります。

この設定では、大文字と小文字が異なるだけのオブジェクトが既に含まれているリポジトリは修正されません。 ポリシーを有効にする前に、このような問題を解決することをお勧めします。 ファイルとフォルダーの名前を変更するか、ブランチタグを再作成して競合しない名前を使用します。

大文字と小文字の区別の強制ポリシーを設定するには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。
  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[大文字と小文字の区別の強制][オン] または [オフ] に設定します。

大文字と小文字の区別の強制ポリシーの設定を示すスクリーンショット。

予約された名前ポリシー

Windows、macOS、Linux という 3 つの主要な OS ファイル システムでは、すべてのファイル名が許可されるわけではありません。 共有リポジトリへのコミットには、1 つ以上のプラットフォームで無効なファイル名またはフォルダー名が含まれる可能性があります。 これらのプラットフォームで無効なファイルまたはフォルダーがフェッチされてチェックアウトされると、作業ディレクトリが破損する可能性があります。 詳細については、「Git クロスプラットフォームの互換性」を参照してください。

ポリシーを有効または無効にして、ファイル名とフォルダー名に制限を設定できます。 [予約された名前] 設定では、すべてのプラットフォームで無効なファイル名またはフォルダー名を含む、リポジトリへのプッシュがブロックされます。 無効な名前を確認するには、「Git クロスプラットフォームの互換性」を参照してください。

予約された名前ポリシーを設定するには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。
  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[予約された名前][オン] または [オフ] に設定します。

予約された名前ポリシーの設定を示すスクリーンショット。

パスの最大長ポリシー

Windows、macOS、Linux という 3 つの主要な OS ファイル システムでは、すべてのパス長が許可されるわけではありません。 共有リポジトリへのコミットには、1 つ以上のプラットフォームで無効なパス長を持つファイルまたはディレクトリが含まれる可能性があります。 パス長が無効なプラットフォームでこれらのファイルまたはディレクトリがフェッチされチェックアウトされると、作業ディレクトリが破損する可能性があります。 詳細については、「Git クロスプラットフォームの互換性」を参照してください。

[パスの最大長] 設定では、あらゆるプラットフォームで無効なパス長を持つファイルまたはディレクトリを含むプッシュがブロックされます。 無効なパス長を確認するには、「Git クロスプラットフォームの互換性」を参照してください。 この設定を有効にした場合、既定の最大値は 248 です。これは、この最大長が、3 つの主要プラットフォームすべてで 100% サポートされているためです。

パスの最大値は変更できます。 たとえば、組織に macOS または Linux の開発者のみ存在する場合、最大長を両方のプラットフォームでサポートされている値 (1016) に設定できます。 また、組織のディレクトリ名付け規則を適用するために、パスの最大値をより小さい値に設定できます。

パスの最大長ポリシーを設定するには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。
  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[パスの最大長][オン] または [オフ] に設定します。
  3. 設定をオンにした場合は、パスの最大長を入力します。

パスの最大長ポリシーの設定を示すスクリーンショット。

ファイルの最大サイズ ポリシー

Git にチェックインされた大きなファイルは無期限にリポジトリに残るため、複製時間とディスク使用量が増加します。 大きなファイルの管理に関するガイダンスについては、「Git で大きなファイルを管理し、格納する」を参照してください。

[ファイルの最大サイズ] ポリシー設定では、特定のサイズを超えたファイルがリポジトリに格納されないようにブロックされます。 プッシュに、この設定で構成された制限を超える新しいファイルまたは更新されたファイルが含まれる場合、そのプッシュはブロックされます。 ユーザーは、未プッシュ履歴を書き換えて大きなファイルを削除し、もう一度プッシュを試す必要があります。

ファイルの最大サイズ ポリシーを構成するには:

  1. [プロジェクトの設定]>[リポジトリ] を選択し、リポジトリを選択します (そのリポジトリのみ構成する場合)。
  2. [すべてのリポジトリ] ページまたは <リポジトリ名> ページの [ポリシー] タブの [リポジトリ ポリシー] で、[ファイルの最大サイズ][オン] または [オフ] に設定します。
  3. 設定をオンにした場合、最大ファイル サイズを選択します。

ファイルの最大サイズ ポリシーの設定を示すスクリーンショット。

次のステップ