> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ハードロック

> ファイルやフォルダーを排他的にロックして、競合する編集を防ぐ

ハードロックは、リポジトリ内の特定のパスに対してユーザーに排他的な書き込みアクセスを与えます。[ソフトロック](/ja/coming_from_perforce#ソフトロック-vs-ハードロック) が、誰かがファイルを編集していることを示す、操作をブロックしないインジケーターであるのに対し、ハードロックはロックが解除されるまで **他のユーザーがロックされたパスへの変更をコミットすることを防ぎます**。

ハードロックは、マージできず排他的な編集が必要なバイナリファイル（`.uasset`、`.umap`、`.fbx` など）に特に便利です。

<Note>ハードロックは **Studio** および **Enterprise** プランで利用可能です。</Note>

## ハードロックの仕組み

* ロックは **リポジトリごと** および **パスごと** です — 各ロックは特定のリポジトリ内の特定のパスに適用されます。
* ロックはそれを作成した **ユーザー** に紐づきます。
* パスがロックされると、**ロック中のユーザー** だけがそのパスに変更をコミットできます。
* 別のユーザーがロックされたファイルをローカルで編集すると、**警告** が表示されますが、編集は保存されます。ただし、その変更を **コミット** することは **ブロック** されます。
* **ロック中のユーザー** または **リポジトリの管理者/オーナー** のみがロックを解除できます。

## パスのロックと解除

### デスクトップアプリまたは Web アプリを使用する

パスをロックするには、ツリービューでファイルまたはフォルダーを右クリックし、コンテキストメニューから **Lock** を選択します。

<img src="https://mintcdn.com/diversion-2/ZjpGQ8XTMbK9M7v-/images/hard-locks/context-menu-lock.png?fit=max&auto=format&n=ZjpGQ8XTMbK9M7v-&q=85&s=b92c5bc7b2d387b21e5caf7df9b39017" alt="コンテキストメニューの Lock オプション" style={{width: '300px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="472" height="304" data-path="images/hard-locks/context-menu-lock.png" />

ロックされると、ツリービューのパスの横にロックアイコンが表示され、誰がロックを保持しているかがわかります。

<img src="https://mintcdn.com/diversion-2/ZjpGQ8XTMbK9M7v-/images/hard-locks/lock-status-tree-view.png?fit=max&auto=format&n=ZjpGQ8XTMbK9M7v-&q=85&s=a70092621ec4da47be16e2672189ed5c" alt="ツリービューのロックステータスインジケーター" style={{width: '300px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="504" height="338" data-path="images/hard-locks/lock-status-tree-view.png" />

ロックを解除するには、ロックされたパスを右クリックし、コンテキストメニューから **Unlock** を選択します。

<Warning>ロックを作成したユーザーまたはリポジトリの管理者/オーナーのみがロックを解除できます。ロック中のユーザーが対応できない場合は、リポジトリ管理者に連絡してください。</Warning>

### CLI を使用する

パスをロックする：

```bash theme={null}
dv lock <path>
```

ロックを解除する：

```bash theme={null}
dv lock -d <path>
```

リポジトリ内のロックされたすべてのパスを一覧表示する：

```bash theme={null}
dv lock
```

## 自動ロック

リポジトリ管理者は、ファイルパターン（拡張子ごと）を設定して、ユーザーが編集を始めたときにマッチするファイルが **自動的にロック** されるようにできます。これにより、一般的なバイナリまたはマージ不能なファイルタイプに対する手動ロックが不要になります。

### 自動ロックの仕組み

* ユーザーが設定されたパターンにマッチするファイルを編集すると、Diversion はそのファイルをそのユーザーに対して自動的にロックします。
* ファイルが **すでに別のユーザーによってロックされている場合**、自動ロックは適用されません — 既存のロックが保持されます。

<Note>自動ロックは、マージできず常に排他的な編集が必要な `.uasset`、`.umap`、`.fbx` などのバイナリファイルに特に便利です。</Note>

### 自動ロックパターンの設定

自動ロックは、リポジトリの管理者またはオーナーによって設定されるリポジトリごとの設定です。

1. **プロフィールアバター** をクリックし、**Your organizations** を選択して、サイドバーの **Repositories**、リポジトリの列で **Hard locks** を選択します
2. リポジトリの列の上部のリポジトリピッカーを使ってリポジトリを選択します
3. ファイル拡張子パターン（例：`.uasset`、`.umap`、`.fbx`）を追加します
4. 変更を保存します

<img src="https://mintcdn.com/diversion-2/ZjpGQ8XTMbK9M7v-/images/hard-locks/auto-lock-settings.png?fit=max&auto=format&n=ZjpGQ8XTMbK9M7v-&q=85&s=0ec5dd78eefec9fb0bb85e00ed57c4ee" alt="リポジトリ設定の自動ロック構成" style={{width: '500px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="546" height="220" data-path="images/hard-locks/auto-lock-settings.png" />

## 自動解除

ロック中のユーザーが特定のブランチに変更をコミットしたときに、ロックを自動的に解除するように設定できます。これは自動ロック設定と一緒に構成されます。

### 自動解除の仕組み

* リポジトリ管理者は自動解除をトリガーする **ブランチ**（例：`main`、`develop`）を定義します。
* ユーザーがこれらのブランチのいずれかにコミットまたはマージすると、コミットに含まれるロック中のファイルは自動的に解除されます。

<img src="https://mintcdn.com/diversion-2/ZjpGQ8XTMbK9M7v-/images/hard-locks/auto-release-settings.png?fit=max&auto=format&n=ZjpGQ8XTMbK9M7v-&q=85&s=4d00137f99f510a10d7c70fff08cf281" alt="リポジトリ設定の自動解除ブランチ構成" style={{width: '500px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888'}} width="516" height="156" data-path="images/hard-locks/auto-release-settings.png" />

## ロックされたパスの表示

* **デスクトップアプリまたは Web アプリ：** ロックアイコンがツリービューでロックされたパスの横に表示されます。アイコンにカーソルを合わせると、誰がロックを保持しているかを確認できます。
* **CLI：** 引数なしで `dv lock` を実行すると、リポジトリ内のすべてのロックが一覧表示されます。

## 権限

| アクション           | 誰が実行できるか                   |
| --------------- | -------------------------- |
| パスをロックする        | 書き込みアクセス権を持つ任意のユーザー        |
| 自分のロックを解除する     | ロック中のユーザー、リポジトリ管理者、またはオーナー |
| 他のユーザーのロックを解除する | リポジトリ管理者またはオーナー            |
| 自動ロック/解除設定を構成する | リポジトリ管理者またはオーナー            |
