p4 shelve

概要

ファイルをサブミットすることなく、作業中チェンジリストからディポに保存します。

構文


p4 [g-opts] shelve [-p] [file …]
p4 [g-opts] shelve [-a option] [-p] -i [-f | -r]
p4 [g-opts] shelve [-a option] [-p] -r -c change
p4 [g-opts] shelve [-a option] [-p] -c change [-f] [file …]
p4 [g-opts] shelve -d -c change [-f] [file …]

解説

保留とは、チェンジリストをサブミットせずに、進行中の作業を一時的にPerforceバージョン化サービスに格納する処理のことです。保留処理は、複数の開発タスク(より優先度の高い作業の割り込みや複数プラットフォームでのテストなど)を同じファイル集合に対して行う必要がある場合、または作業をディポに登録する前にコードレビュー用にファイルを共有する必要がある場合に有効です。

p4 shelveコマンドにより、保留状態のファイルを作業中チェンジリスト内で作成、変更、または破棄することができます。保留状態のファイルは、それらが破棄(p4 shelve -dを使用)されるか、以降のp4 shelveコマンドによって置き換えられるまでディポに保持されます。

ファイルを保留した後は、クライアントワークスペース内でそれらを元に戻すか変更できます。また、保留されたバージョンのファイルをp4 unshelveコマンドによってワークスペースに復元することができます。

ファイルが保留されているとき、他のユーザは保留状態のファイルを自分のワークスペースまたは他のクライアントワークスペースに保留解除することができます。

保留されたファイルには、p4 diffp4 diff2p4 filesp4 printの各コマンドにより、リビジョン指定子@=changeを使用してアクセスすることも可能です。このとき、changeには作業中チェンジリストの番号を指定します。

分散環境で作業している場合は、-pオプションを使用して、保留状態のチェンジリストをエッジサーバからコミットサーバに昇格します。コミットサーバ上のチェンジリストには、分散環境内の他のエッジサーバからアクセスすることができます。保留状態の既存のチェンジリストを昇格するときは、-fまたは-rオプションを使用して保留状態のファイルの内容を変更しない限り、未変更で昇格されます。分散環境での保留状態のファイルの使用については、「使用上の留意点」および『Perforceサーバ管理者ガイド: マルチサイト展開』を参照してください。

引数が指定されていない場合、p4 shelveは新しいチェンジリストを作成し、ユーザのデフォルトチェンジリストからファイルを追加した後(ユーザがp4 submitで使用されるものと同様のフォームに入力した後)、指定されたファイルをディポに保留します。ファイルパターンが指定されている場合、p4 shelveはそのパターンに一致するファイルのみを保留します。

前から存在する保留領域にファイルを追加するには、最初にそのファイルを保留領域のチェンジリスト内で作業状態にする必要があります。p4 reopenを使用して、作業状態のファイルをあるチェンジリストから別のチェンジリストに移動させてください。

オプション

-a option

submitunchanged (デフォルト)オプションはすべてのファイルを保留にします。leaveunchangedオプションは変更されたファイルのみを保留にします。変更されていないファイルは、番号付き作業中チェンジリストで作業状態のままになります。

-c change

保留状態のファイルを作成、破棄、または変更する作業中チェンジリストを指定します。

作業中チェンジリストを所有しているユーザおよびクライアントワークスペースのみが、保留状態のファイルを追加または変更できます。(管理者は-fを使用してファイルを破棄することが可能です。)

ファイルパターンによって指定されたファイルは、指定されたチェンジリスト内で既に作業状態にされている必要があります。p4 reopenを使用して、作業状態のファイルをあるチェンジリストから別のチェンジリストに移動させてください。

-d

指定されたチェンジリストにある保留状態のファイルを破棄し、それらに対してp4 unshelveの操作を行えないようにします。

作業中チェンジリストを所有しているユーザおよびクライアントワークスペースのみが、保留状態のファイルを破棄できます。(管理者は-fを使用してファイルを破棄することが可能です。)

-f

作業中チェンジリストにある既存の保留状態のファイルを、クライアントワークスペース内にコピーされた内容へと強制的に上書きします。

Perforce管理者はこのオプションを-dとともに使用して、指定されたチェンジリストにある保留状態のファイルを強制的に破棄することができます。このオプションを使用すると、衝突解決が保留されている原因となっている保留状態のファイルが削除されます。このような場合、衝突解決を行うユーザは、保留状態のファイルから内容をマージすることができません。ユーザは存在しない保留ファイルを無視するか(-ay)、元に戻す必要があります。

-i

チェンジリストのコメントを標準入力から読み取ります。入力はp4 shelveのフォームで使用されているのと同じ形式でなければなりません。(保留状態のファイルを含む既存のチェンジリストを変更する場合、このオプションは-cも含みます。)

-p

保留状態の変更をエッジサーバからコミットサーバに昇格します。コミットサーバには、分散環境内の他のエッジサーバからアクセスすることができます。保留状態の変更が昇格されると、保留ファイルに対する以降のローカル修正もすべてコミットサーバにプッシュされ、保留ファイルが削除されるまで維持されます。詳細については、「使用上の留意点」を参照してください。

-r

チェンジリスト内の保留状態のファイルをすべて、ワークスペースで作業状態にされているファイルに置き換えます。

-rオプション(-cまたは-iとともに使用)は、チェンジリスト内の保留状態のファイルをすべて、そのチェンジリスト番号で作業状態にされているワークスペース内のファイルに置き換えます。以前に保留状態にされたファイルは削除されます。作業中チェンジリストのユーザとクライアントワークスペースのみが、保留状態のファイルを置き換えることができます。

g-opts

“グローバルオプション”」を参照してください。

使用上の留意点

ファイル引数にリビジョン指定子を使えるか?

ファイル引数にリビジョン範囲を使えるか?

最低限必要なアクセスレベル

使用可

使用可

write

昇格された保留ファイルは、分散構成のコミットサーバに存在する保留ファイルです。コミットサーバで直接作成されたか、またはp4 shelveコマンドの-pオプションを指定して昇格されたため、コミットサーバに存在します。保留ファイルにアクセスするコマンドは、昇格された保留ファイルの処理方法を認識しています。

保留ファイルを降格するには、保留ファイルを削除して新しい保留ファイルを作成します。

保留ファイルは初回の作成時に昇格することができます。通常の保留ファイルは、以下のいずれかのコマンドを実行して作成した後に昇格できます。

shelve -p -f -c myChange
shelve -p -r -c myChange

保留ファイルを昇格することにより、保留ファイルをあるサーバから別のサーバに移動できるようになります。これを行うには、以下の手順を実行する必要があります。

  1. 保留ファイルのコピー元のサーバ(サーバXとします)で保留ファイルを昇格します。

  2. コピー先のサーバ(サーバYとします)に保留ファイルを保留解除します。

  3. サーバYの変更を保留にします。これにより、サーバYが所有している変更内のファイルが作業状態になります。新しい保留ファイルは昇格されずに作成されますが、必要に応じて昇格できます。

保留状態の変更が昇格されているかどうかを特定するには、その変更を所有しているサーバ以外のサーバで保留ファイルへのアクセスを試みるか、p4 -ztag changesコマンドの出力を確認します。

昇格された保留ファイルを操作する際は、以下の制限に注意します。

  • 保留ファイルを所有しているサーバを使用してしない場合、リモートで昇格された保留ファイルを、すでに作業状態になっているローカルファイルに保留解除することはできません。

  • 保留ファイルを所有しているサーバを使用していない場合、別のブランチに保留解除することはできません(-b -S)。

  • 昇格された保留ファイルが存在する場合、エッジサーバワークスペースをアンロードすることはできません。

  • 昇格された保留ファイルは慎重に使用してください。保留ファイルの昇格およびアクセスには時間がかかります。

関連コマンド

保留されたファイルをワークスペースに復元する。

p4 unshelve