下書き: -l(排他的ロック)ファイルを移動できない時の対処

本ページは下書きです。

-l(実体は Perforce の +l ファイルタイプ)は、 同時に1人しかチェックアウトできない制約です。

そのため、対象ファイルを誰かがチェックアウト中だと、 Rename/Move が失敗する場合があります。

本手順では、事故防止を優先し、 ローカルに同一ファイルをコピーして保管したうえで、 元ファイルを削除し、移動先に追加してサブミットする方法を採用します。

まず確認すること

  1. 対象ファイルを右クリックし、Opened by(または同等メニュー)で誰が開いているか確認する
  2. 別ユーザーが開いている場合は、その人のサブミット待ちか Revert 依頼が必要

ケース別の解決方法

ケース1: 他の人が開いている

  1. 開いているユーザーに連絡する
  2. 次のどちらかを依頼する
    • すぐサブミットする
    • 変更不要なら Revert する
  3. 相手のチェックアウトが解放された後に、ローカル退避コピーを作成する
  4. 元ファイルを Mark for Delete し、移動先に Mark for Add する
  5. 問題なければ Submit する

補足:

  • エクスプローラーで先に実体を消すと復旧しづらいため、退避コピーを作ってから操作する

ケース2: 開いているユーザーが不在・放置で作業が止まる

  1. 管理者に対応を依頼する
  2. 管理者が対象の Open 状態を確認し、必要に応じて Unlock / Revert を実施
  3. 解放後に、退避コピー作成 -> Mark for Delete -> Mark for Add の順に実施する

注意:

  • 管理者による強制 Revert は相手の未提出変更を失う可能性がある
  • 実施前にチーム内で合意を取る

実際の移動手順(解放後)

  1. 対象ファイルをローカルで同名コピーして退避する
  2. P4Vで元ファイルを Mark for Delete する
  3. 移動先フォルダに退避コピーを置く
  4. 移動先ファイルを Mark for Add する
  5. Pending Changelist で delete と add が入っていることを確認する
  6. 内容差分とファイルタイプ(+l)を確認する
  7. 問題なければ Submit する

補足:

  • 移動先追加時にファイルタイプが変わる場合があるため、提出前に必ず確認する
  • 事故防止のため、作業中は退避コピーを残しておく

よくある詰まりポイント

  • “already opened” 系のエラー:
    • 他ユーザーのチェックアウトが残っている可能性が高い
  • Mark for Delete / Mark for Add が選べない:
    • ワークスペースのマッピング外を選択している可能性がある
  • add 後にファイルタイプが +l ではなくなっている:
    • 提出前に Type を確認し、必要なら管理者または運用ルールに沿って修正する
  • Submit できない:
    • 依存ファイルが同一 Changelist に含まれていない可能性がある

参考(CLIで確認する場合)

p4 opened -a //depot/path/to/file

誰が開いているかを確認できます。 P4V だけで運用する場合は CLI の使用は必須ではありません。