ファイルのロック
ファイルのロックを使用すると、複数のユーザーが同じファイルを同時に編集するのを防ぐことができ、マージコンフリクトの回避に役立ちます。ファイルのロックは、デザインファイル、動画、その他のテキスト以外のコンテンツなど、マージできないバイナリファイルで特に有用です。
GitLabでは、2種類のファイルのロックをサポートしています:
- 排他的ファイルのロック: Git LFSと
.gitattributesを使ったコマンドラインで適用されます。これらのロックは、どのブランチ上でもロックされたファイルの変更を防ぎます。Free、Premium、およびUltimateプランで利用可能です。詳細については、排他的ファイルロックを参照してください。 - デフォルトブランチのファイルおよびディレクトリロック: GitLab UIを通じて適用されます。これらのロックは、デフォルトブランチ上のファイルおよびディレクトリの変更のみを防ぎます。
デフォルトブランチのファイルおよびディレクトリロック
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
デフォルトブランチロックは、プロジェクトのデフォルトブランチ設定にのみ適用されます。これらのロックは、他のブランチでの共同作業者のワークフローをブロックすることなく、デフォルトブランチの安定性を維持するのに役立ちます。
ファイルまたはディレクトリがユーザーによってロックされている場合:
- ロックを作成したユーザーのみが、デフォルトブランチ上のファイルまたはディレクトリを変更できます。
- 他のユーザーにとって、ロックされたファイルまたはディレクトリはデフォルトブランチ上で読み取り専用です。
- デフォルトブランチ上のロックされたファイルまたはディレクトリへの直接の変更はブロックされます。
- ロックされたファイルまたはディレクトリを変更するマージリクエストは、デフォルトブランチにマージできません。
デフォルト以外のブランチでは、すべてのユーザーが引き続きロックされたファイルやディレクトリを変更できます。これらのファイルやディレクトリには、ロックステータスが表示されます。これにより、チームメンバーは他のブランチでのワークフローを制限することなく、進行中の作業を認識できます。
ファイルのロックは、フォーク同期中もバイパスされます。アップストリームプロジェクトからフォークを更新すると、フォーク内のロックされたファイルはアップストリームプロジェクトの変更で上書きされる可能性があります。
権限
デフォルトブランチのロックを作成、表示、または管理するには、プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。詳細については、ロールと権限を参照してください。
ファイルまたはディレクトリをロック
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
ファイルまたはディレクトリをロックするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- ロックしたいファイルまたはディレクトリに移動します。
- 右上隅でロックを選択します。
- 確認ダイアログで、ロックを選択します。
ボタンがロック中に変わります。ファイルまたはディレクトリを誰がいつロックしたかを表示するには、ロック中を選択します。
ディレクトリ内にファイルまたはディレクトリがすでにロックされている場合、そのディレクトリをロックすることはできません。親ディレクトリがロックされている場合、ディレクトリのロックを解除することはできません。どちらの場合も、ボタンはロック中と表示され、関連するロックの詳細が説明されます。ロックされたファイルまたはディレクトリを表示するには、ロックを表示を選択します。
ロックが表示されない場合、ファイルまたはディレクトリをロックするための必要な権限がありません。
ロックされたファイルを表示
ロックされたファイルを表示するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > ロックされたファイルを選択します。
ロックされたファイルページには、Git LFS排他的ロックまたはGitLab UIのいずれかでロックされたすべてのファイルが表示されます。
ファイルロックを削除
前提条件:
- 次のいずれかの条件を満たす必要があります。
- ロックを作成したユーザーであること。
- プロジェクトのメンテナーまたはオーナーロールを持っていること。
ロックを解除するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- ロックを解除したいファイルまたはディレクトリに移動します。
- ロック中を選択します。
- ファイルのロックを解除またはディレクトリのロックを解除を選択します。
- 確認ダイアログで、ロック解除を選択します。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > ロックされたファイルを選択します。
- ロックを解除したいファイルの右側で、ロック解除を選択します。
- 確認ダイアログで、OKを選択します。
排他的ファイルロックを解除するには、ファイルをロックおよびロック解除を参照してください。
マージリクエストのチェックとロック所有権
ロックされたファイルまたはディレクトリへの変更を含むマージリクエストがマージされるように設定されている場合、GitLabはマージリクエストの作成者がロックのオーナーであるかどうかをチェックします。GitLabは個々のコミット作成者をチェックしません。
例:
- マージリクエストの作成者がファイルまたはディレクトリをロックしたユーザーと同じである場合、そのマージリクエストはマージできます。
- マージリクエストの作成者がロックのオーナーと異なる場合、そのマージリクエストはブロックされます。
マージリクエストの作成者以外のユーザーは、ロックされたファイルやディレクトリを更新または変更する変更をマージリクエストブランチにプッシュできます。ロックチェックはマージリクエストの作成者のみを考慮するため、マージリクエストはブロックされません。
ロックされたファイルへの不正な変更を防ぐには:
- マージする前にレビューを必要とするマージリクエスト承認ルールを使用します。
- ロックされたファイルへのマージリクエストを監視し、承認された変更のみが含まれるようにします。
- 既存のマージリクエストブランチにプッシュする権限を持つユーザーが誰であるかをワークフローで考慮してください。