p4 shelve

このコマンドは、ファイルまたはストリーム仕様をサブミットすることなく、 作業中チェンジリストからディポに保存します。

構文規則

p4 [g-opts] shelve [-Af | -As] [-p] [files]
p4 [g-opts] shelve [-Af | -As] [-a option] [-p] -i [-f | -r]
p4 [g-opts] shelve [-Af | -As] [-a option] [-p] -r -c changelist#
p4 [g-opts] shelve [-Af | -As] [-a option] [-p] -c changelist# [-f] [files]
p4 [g-opts] shelve [-Af | -As] -d -c changelist# [-f] [files] --parallel=threads=N[,batch=N][,min=N]

説明

保留とは、チェンジリストをサブミットせずに、進行中の作業を一時的にHelixサーバに格納する処理のことです。 以下の処理が必要な場合は、保留を行うと便利です。

  • 同じファイルセットを使用して複数の開発作業を行う場合(複数のプラットフォームに またがってテストを行う場合など)

または

  • 作業内容をディポにコミットする前に、コードレビュー用にファイルを共有する場合

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

保留されるファイルに加えて、p4 shelveは作業中のストリームの 仕様も保留します。作業中のストリームの仕様については、 p4 streamを参照してください。

ファイルを保留すると、以下の操作が可能になります。

  • クライアントワークスペースでファイルを元に戻す(またはファイルを編集する)。
  • p4 unshelveコマンドを使用して、ファイルの保留バージョンを ワークスペースに復元する。

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

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

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

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

既存のシェルフにファイルを追加するには、最初にそのファイルを、 追加先シェルフのチェンジリストで開く必要があります。

作業状態のファイルをチェンジリスト間で移動するには、 p4 reopenコマンドを使用します。

注意

p4 obliterate myfileは、ファイルの保留(アーカイブまたはメタデータ)を完全消去しません。 完全消去されたファイルを保留解除しようとすると、エラーが発生します。 ファイルの内容を復元するには、ファイルを出力します。 保留を解消するには、シェルフを削除します。

ヒント

デフォルトのチェンジリスト内でオープンされたファイルからシェルフを作成する場合、[files]引数には1つのファイルパターンのみを指定します。以下に例を示します。

p4 shelve ....html

(ワイルドカードを使用して複数のファイルを指定できることに注意してください。)

ただし、番号が付いている変更内に作業状態のファイルが含まれている場合は、複数のfile引数を指定することができます。以下に例を示します。

p4 shelve -c 12108 ....html "*.c"

ストリームとp4 shelveコマンド

ストリーム仕様がオープンされている場合、保留状態のチェンジリストにもそのストリーム仕様がデフォルトで含まれます。p4 help streamcmdsコマンドを実行して、コマンドラインに表示される出力を確認してください。

デフォルトでは、すべてのファイルが削除されない限り、ストリーム仕様は削除されません。

注意

既存の保留ファイルと同じ内容で新しい保留ファイルを作成した場合、同じ内容のアーカイブファイルが複製されるのではなく、既存のアーカイブファイルの内容が参照されるようになりました。アーカイブを共有する保留ファイルの内容が上書きされないようにするため、新しい保留ファイルのアーカイブに数値の拡張子が付加されるようになりました。例えば、「1.1.gz」ではなく「1.1.1.gz」のようになります。

オプション

-Af

指定したチェンジリストでファイルのみが保留されます。

-As

指定したチェンジリストで、作業状態のストリーム仕様のみが保留されます。ストリーム仕様がオープンされていて、-Afオプションと-Asオプションをどちらも指定しなかった場合、保留状態のファイルにもストリーム仕様がデフォルトで含まれます(p4 help streamcmdsを参照)。

-a option

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

-c change

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

作業中チェンジリストを所有しているユーザとクライアントのみが、 保留ファイルの追加と変更を行うことができます(管理者は、-fを指定して ファイルを破棄することができます)

ファイルパターンを使用して指定したファイルは、指定したチェンジリスト内で 既にオープンされている必要があります。作業状態のファイルをチェンジリスト間で 移動するには、p4 reopenコマンドを使用します。

-d

-d -cオプションを指定すると、指定したチェンジリスト内の保留ファイルが削除され、 p4 unshelveコマンドでそれらのファイルを使用できなくなります。 デフォルトの場合、作業中チェンジリストのユーザとクライアントのみが、保留ファイルを削除することができます。adminアクセス権をつユーザは、-fオプションを指定することにより、保留ファイルを強制的に削除することができます。

保留状態のチェンジリストにストリーム仕様が含まれている場合、すべてのファイルが削除されると、ストリーム仕様がデフォルトで削除されます。

-dオプションと-Asオプションを組み合わせて指定すると、ファイルが存在する状態であっても、ストリーム仕様が強制的に削除されます。

-f

作業中チェンジリスト内の保留ファイルを強制的に上書きするには、-fオプションを-cオプションまたは-iオプションとともに指定します。

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

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

-i

標準入力から、作業中チェンジリストの仕様と保留ファイルが読み込まれます。ユーザのエディタは起動しません。保留ファイルが含まれている既存のチェンジリストを変更するには、-cオプションを使用して、チェンジリスト番号を指定します。

-p

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

-pオプションと-cオプションを組み合わせて指定すると、-fオプションまたは-rオプションを使用して昇格前に保留ファイルを更新しない限り、変更されていない保留ファイルが昇格されます。

-r

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

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

--parallel

 

自動で起動した子プロセスから独立したネットワーク接続を使用した 複数ファイルの並列転送を指定します。 net.parallel.shelve.batchnet.parallel.shelve.minnet.parallel.shelve.threadsも参照してください。

g-opts

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

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

はい

はい

open

shelveコマンド内のすべてのファイルに対するopenアクセス権限を持っていないユーザの場合、shelveコマンドが失敗します。

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

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

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

$ p4 shelve -p -f -c myChange
$ p4 shelve -p -r -c myChange

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

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

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

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

  • 昇格された保留ファイルが存在する場合、エッジサーバワークスペースを アンロードすることはできません。
  • 昇格された保留ファイルを使用する場合は、注意して使用してください。 保留ファイルの昇格やアクセスには時間がかかります。

関連コマンド

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

p4 unshelve