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