ファイル指定
概要
クライアントシンタックス、ディポシンタックス、またはローカルシンタックス中のあらゆるPerforceコマンドにおいて、どんなファイルでも指定できます。ワークスペース名とディポ名は、同じネームスペースを共有しているため、Perforceサービスがワークスペース名とディポ名を混同することは決してありません。
シンタックスフォーム
ローカルシンタックスは、ローカルシェルかOSで指定されたファイル名を参照します。ローカルシンタックスで参照されるファイル名は、ファイル名の絶対パス、または現在の作業ディレクトリを起点とする相対パスで指定可能です。(相対パスの構成要素は、ファイル指定子の最初の部分にしか現れません。)
Perforceには、OSが異なっても変わることのない独自のファイル指定方法があります。ファイルがクライアントルートを起点とする相対パスで指定された場合、ファイルはクライアントシンタックスで示されているということになります。また、ディポの最上層を起点とする相対パスで指定された場合は、ディポシンタックスで示されているということになります。このどちらかで指定されたファイルは、Perforceシンタックスで指定されたと言えます。
Perforceのファイル指定子は常に2つのスラッシュ(//
)で始まり、その後にクライアントかディポの名前、さらにその後にクライアントかディポのルートディレクトリを起点とするファイルのフルパス名が続きます。
クライアントシンタックスおよびディポシンタックスのパス構成要素は、ローカルのOSやシェルが使用する構成要素区切り文字に関わりなく、常にスラッシュ(/
)で区切られます。
各シンタックスの例を以下に示します。
構文 |
例 |
---|---|
ローカルシンタックス |
|
ディポシンタックス |
|
クライアントシンタックス |
|
ワイルドカード
Perforceシステムでは、3つのワイルドカードが使用できます。
ワイルドカード |
意味 |
---|---|
|
1つのディレクトリ内で、スラッシュを除くすべての文字に一致します。 |
|
現在の作業ディレクトリおよびすべてのサブディレクトリ内で、すべてのファイルに一致します。(つまり、複数のサブディレクトリにわたって、スラッシュも含めてすべてに一致します。) |
|
ビューの中で使用されるとき、ファイル名中の部分文字列を再配列するための位置指定子です。 |
例:
式 |
一致するファイル |
---|---|
|
現在のディレクトリにある、 |
|
現在のサブディレクトリにある、 |
|
現在のディレクトリおよびそのサブディレクトリにあるすべてのファイル |
|
現在のディレクトリおよびそのサブディレクトリにある、最後に |
|
|
|
|
|
当該ディポにあるすべてのファイル |
|
すべてのディポにあるすべてのファイル |
リビジョン指定子の使用
ファイル指定子は、#
か@
を付加することにより修正できます。
ファイル指定子#
および@
は、ディポに保存されたファイルの特定リビジョンを参照するために使用します。
修飾子 |
意味 |
---|---|
|
リビジョン指定子: |
|
存在しないリビジョン:
これは、ディポ内にあるファイルをそのままディポ内に残す一方、クライアントワークスペースからは削除したいときに便利で、例えばp4 sync
ファイル指定子 |
|
|
|
現在のクライアントにあるリビジョン: p4 syncで最後にクライアントワークスペースに同期させたファイルのリビジョン。 |
|
チェンジ番号: チェンジリスト |
|
チェンジ番号: 作業中チェンジリスト番号 |
|
ラベル名:ラベル |
|
クライアント名:クライアントワークスペース
削除されたファイル(つまり、最新リビジョンで |
|
日付と時刻:指定した日付と時刻における 時刻を指定しない場合、指定した日の午前00:00:00における最新リビジョンが返されます。
日付と時刻は、
日付指定子 |
リビジョン指定子は、一度に多くのファイルを操作するために使用することができます。p4 sync //myclient/...#4は、作業状態にないすべてのファイルの4番目のリビジョンを、クライアントワークスペースにコピーします。
ファイルを日付と時刻で指定する場合(つまり
という形式の指定子を使用する場合)、ローカルシェルによって日付指定子が単一トークンとして解釈される必要があります。日付だけではなく時刻を指定するために日付指定子を使用する場合は、日付指定子の前後に引用符を使用しなければならないことがあります。
file
@datespec
保留されたファイルには、p4 diff、p4 diff2、p4 files、および p4 printの各コマンドでリビジョン指定子@=
を使用してアクセスすることも可能です。ただし、change
change
は作業中チェンジリスト番号を示します。
Perforceのファイル指定文字は、ローカルシェルによって途中で取得され解釈されてしまうことがあります。そのような文字は、使用する前にエスケープしておく必要があります。例えば、#
はたいていのUNIXシェルでコメント文字として使用され、/
は(Perforce以外の)DOSコマンドによってオプション指定子として解釈されます。スペースが入っているファイル名は、コマンドラインにおいて引用符で囲まなければならないことがあります。
これらの問題、およびプラットフォームに特有な他の問題については、プラットフォーム別のリリースノートを参照してください。
リビジョン範囲の使用
Perforceコマンドのいくつかは、リビジョン範囲を使用してファイル引数を変更することができます。リビジョン範囲は2つの別個のリビジョン指定子で、カンマによって区切られます。例えば、p4 changes file#3,5は、ファイルfile
の3番目、4番目、および5番目のリビジョンをサブミットしたチェンジリストをリストします。
リビジョン範囲には、使用するコマンドにより、次のように異なる2つの意味があります。2つの意味は、以下の通りです。
-
指定した範囲内にあるすべてのリビジョンに対して、コマンドを実行します。例えば、p4 jobs //...#20,52は、どのファイルかに関わりなく、ファイルの20番目から52番目までのリビジョンをサブミットしたチェンジリストによって修正された、すべてのジョブをリストします。
リビジョン範囲は暗黙的に#1で始まります。例えば、p4 fixes //depot/file.c#5とすると、リビジョン1からリビジョン5までに修正されたすべてのジョブを指します。(リビジョン5で修正されたジョブだけを表示するには、p4 fixes //depot/file.c#5,5と指定する必要があります。)
リビジョン範囲は、p4 changes、p4 fixes、p4 integrate、p4 jobs、およびp4 verifyコマンドとともに使用される場合、上記のように解釈されます。
-
指定した範囲内で最大番号のリビジョンのみに対して、コマンドを実行します。例えば、コマンドp4 print file@30,50は、チェンジリスト30~50でサブミットされたファイル
file
の、最大番号のリビジョンを出力します。これは、p4 print file@50とは次のように異なります。例えば、ファイルfile
のリビジョン#1がチェンジリスト20でサブミットされ、ファイルfile
のリビジョン#2がチェンジリスト60でサブミットされた場合、p4 print file@30,50は何も出力しません。これに対し、p4 print file@50は、ファイルfile
のリビジョン1を出力します。
リビジョン範囲は、非常に強力なものとなりえます。例えば、p4 changes
file#3,@labelname
は、ファイルfile
の3番目のリビジョンから、ラベルlabelname
に保存されているリビジョンまでをサブミットしたすべてのチェンジリストをリストします。
ファイル名およびエンティティに関する文字の制限
国際語化のサポートにより、Perforceでは、印刷可能な非ASCII文字をファイル名、ラベル名、クライアントワークスペース名、およびその他の識別子に使用することができます。
パス名構成要素区切り記号(/
)は、ファイル名、ディポ名、クライアントワークスペース名に使用することはできませんが、ラベル名、ジョブ名、ユーザ名の中に含めることができます。再帰的サブディレクトリワイルドカード(...
)は、ファイル名、ラベル名、およびその他の識別子に使用することはできません。
文字 |
理由 |
---|---|
|
Perforceワイルドカード: すべてに一致し、カレントディレクトリのレベルで機能し、カレントレベル以下のすべてのディレクトリレベルにあるファイルを含みます。 |
|
パス名の構成要素を区切るPerforceの区切り記号。 |
Perforceリビジョン指定子ワイルドカード(@
と#
)、ファイル一致ワイルドカード(*
)、または位置置換ワイルドカード(%%
)がファイル名または任意のディレクトリ構成要素に含まれたファイルを参照するには、文字の16進値のASCII表現を使用します。ASCII拡張は、以下の4つの文字にのみ適用されます。
文字 |
ASCII拡張 |
---|---|
|
|
|
|
|
|
|
|
status@june.txt
などのファイルを追加するには、次のようなコマンドを使用して、特殊文字の文字解釈を強制します。
p4 add -f //depot/path/status@june.txt
チェンジリストをサブミットすると、文字が自動的に拡張され、次のように変更サブミットフォームに表示されます。
//depot/path/status%40june.txt
ファイルが追加されたチェンジリストをサブミットした後で、そのチェンジリストをワークスペースに同期させる場合や、ワークスペース内で編集する場合は、ASCII拡張を使用する必要があります。
p4 sync //depot/path/status%40june.txtp4 edit //depot/path/status%40june.txt
特殊文字の大半は、クロスプラットフォームの環境では、原則としてファイル名には使用できません。UNIXではパスの構成要素を/
で区切りますが、多くのDOSコマンドは/
をコマンドラインのオプションとして解釈します。たいていのUNIXシェルは#
をコメントの始まりとして解釈します。DOSおよびUNIXのシェルは両方とも*
を拡張して複数のファイルに一致させ、DOSコマンドラインは%
を変数の参照に使用します。
同様に、非ASCII文字をファイル名とPerforce識別子に使用することは可能ですが、それらの文字をコマンドラインから入力するときに、プラットフォーム特有の解決策が必要になることがあります。GUIベースのファイルマネージャのユーザは、このようなファイルを、ドラッグアンドドロップ操作で取り扱うことができます。