ファイル指定
クライアントシンタックス、ディポシンタックス、またはローカルシンタックス中のあらゆるHelixサーバコマンドにおいて、どんなファイルでも指定できます。 ワークスペース名とディポ名は、同じネームスペースを共有しています。 Perforceサービスではワークスペース名とディポ名が常に区別されます。
シンタックスフォーム
ローカルシンタックスは、ローカルシェルかオペレーティングシステムで指定されたファイル名を参照します。 ローカルシンタックスで参照されるファイル名は、ファイル名の絶対パス、または現在の作業ディレクトリを起点とする相対パスで指定可能です。 (相対パスの構成要素は、ファイル指定子の先頭部分にのみ指定できます。)
Helixサーバには、OSが異なっても変わることのない独自のファイル指定方法があります。 ファイルがクライアントルートを起点とする相対パスで指定された場合、ファイルはクライアントシンタックスで示されているということになります。 また、ディポの最上層を起点とする相対パスで指定された場合は、ディポシンタックスで示されているということになります。 このどちらかで指定されたファイルは、Helixサーバシンタックスで指定されたと言えます。
Helixサーバのファイル指定子は常に2つのスラッシュ(//
)で始まり、その後にクライアントかディポの名前、さらにその後にクライアントかディポのルートディレクトリを起点とするファイルのフルパス名が続きます。
クライアントシンタックスおよびディポシンタックスのパス構成要素は、ローカルのOSやシェルが使用する構成要素区切り文字に関係なく、常にスラッシュ(/
)で区切られます。
各シンタックスの例を以下に示します。
構文 | 例 |
---|---|
ローカルシンタックス |
/staff/bruno/myworkspace/file.c for Linux c:\staff\bruno\myworkspace\file.c for Windows |
ディポシンタックス |
|
クライアントシンタックス |
|
ワイルドカード
Helixサーバシステムでは、これらのワイルドカードが使用できます。
ワイルドカード | 意味 |
---|---|
|
1つのディレクトリ内で、スラッシュを除くすべての文字に一致します。 |
|
現在の作業ディレクトリおよびすべてのサブディレクトリ内で、すべてのファイルに一致します。 複数のサブディレクトリにわたり、スラッシュも含めてすべて一致します。 |
|
ビューの中で使用されるとき、ファイル名中の部分文字列を再配列するための位置指定子です。 |
ワイルドカード式の例を以下に示します。
式 | 一致するファイル | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
現在のディレクトリにある、Jで始まるファイル |
||||||||||
|
現在のサブディレクトリにある、 |
||||||||||
//gra*/dep* | //graph/depot/、//graphs/depots、gravity/deposits (//graph/depot/release1/を除く) | ||||||||||
|
現在のディレクトリおよびそのサブディレクトリにあるすべてのファイル |
||||||||||
|
現在のディレクトリおよびそのサブディレクトリにある、最後に.cが付くすべてのファイル |
||||||||||
|
/usr/bruno_wsに含まれるすべてのファイル |
||||||||||
|
|
||||||||||
|
ディポにあるすべてのファイル(デフォルト名は「depot」です) |
||||||||||
//depot/main/rel... | //depot/main/rel/、//depot/main/releases/、//depot/main/release-note.txt、//depot/main/rel1/product1など | ||||||||||
|
すべてのディポにあるすべてのファイル |
||||||||||
//depot/dir1/%%1.%%2 //bruno_ws/filesbytype/%%2/%%1
|
この例ではクライアントビューマッピングで位置指定子を使用し、同期したファイルをファイルタイプごとに再配置しています。 指定された拡張子(
最新バージョンをディポからワークスペースに読み込みます。
|
リビジョン指定子の使用
ファイル指定子は、#
または@
を付加することにより修正できます。
ファイル指定子#
および@
は、ディポに保存されたファイルの特定リビジョンを参照するために使用します。
修飾子 | 意味 |
---|---|
|
リビジョン指定子: |
|
存在しないリビジョン: これは、ファイルをクライアントワークスペースからは削除するが、ディポ内にはそのまま残す必要がある場合に便利です。例えば、 ファイル指定子 |
|
|
|
現在のクライアントにあるリビジョン: |
|
チェンジ番号: チェンジリスト |
|
チェンジ番号: 指定されたチェンジリスト番号
|
|
ラベル名: ラベル |
|
クライアント名: クライアントワークスペース 削除されたファイル(つまり、最新リビジョンで |
|
日付と時刻: 指定した日付と時刻における 時刻を指定しない場合、指定した日の午前00:00:00における最新リビジョンが返されます。 日付と時刻は、 日付指定子 |
リビジョン指定子は、一度に多くのファイルを操作するために使用することができます。p4 sync //myclient/...#4
は、作業状態にないすべてのファイルの4番目のリビジョンを、クライアントワークスペースにコピーします。
ファイルを日付と時刻で指定する場合(つまり
という形式の指定子を使用する場合)、ローカルシェルによって日付指定子が単一トークンとして解釈される必要があります。 日付のみではなく時刻を指定するために日付指定子を使用する場合は、日付指定子の前後に引用符を使用しなければならないことがあります。file
datespec
保留されたファイルには、p4 diff
、p4 diff2
、p4 files
、および p4 print
の各コマンドでリビジョン指定子@=
を使用してアクセスすることも可能です。ただし、change
change
は作業中チェンジリスト番号を示します。
Helixサーバのファイル指定文字は、ローカルシェルによって途中で取得され解釈されてしまうことがあります。そのような文字は、使用する前にエスケープしておく必要があります。 例えば、#
はたいていのUNIXシェルでコメント文字として使用され、/
は(Helixサーバ以外の)DOSコマンドによってオプション指定子として解釈されます。 スペースが入っているファイル名は、コマンドラインにおいて引用符で囲まなければならないことがあります。
これらの問題とプラットフォーム固有の問題については、該当するプラットフォームの リリースノート を参照してください。
リビジョン範囲の使用
Helixサーバコマンドのいくつかは、リビジョン範囲を使用してファイル引数を変更することができます。 リビジョン範囲は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
に保存されているリビジョンまでをサブミットしたすべてのチェンジリストをリストします。
ファイル名およびエンティティに関する文字の制限
ユーザやクライアントなど、ファイルおよびエンティティに名前を付ける時には、次の制限に注意してください。
文字 | Helixサーバ使用法 | 使用不可のエンティティ(作成方法が次の場合) |
---|---|---|
|
再帰的サブディレクトリワイルドカード ファイル一致ワイルドカード 位置置換ワイルドカード |
|
|
パス名構成要素の区切り |
ファイル名には使用できません |
|
Helixサーバに特別な意味はありません。 |
(使用できますが、Microsoft Windowsではバックスラッシュをパス名構成要素の区切り文字として使用していることに注意してください。) |
|
チェンジリスト、ラベル、クライアント、または日付指定子の識別子のプレフィックス。 |
|
|
リビジョン番号の指定 |
|
|
チェンジリスト番号は数字のみです。 |
数字のみの識別子はユーザ、クライアント、ディポ、ラベル、ジョブ、またはストリームには使用できないため、次のようなものを検討してください: |
Helixサーバリビジョン指定子ワイルドカード(@
と#
)、ファイル一致ワイルドカード(*
)、または位置置換ワイルドカード(%%
)がファイル名または任意のディレクトリ構成要素に含まれているファイルを参照するには、文字の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.txt
$ p4 edit //depot/path/status%40june.txt
特殊文字の大半は、クロスプラットフォームの環境では、原則としてファイル名には使用できません。UNIXではパスの構成要素を/
で区切りますが、多くのDOSコマンドは/
をコマンドラインのオプションとして解釈します。 たいていのUNIXシェルは#
をコメントの始まりとして解釈します。 DOSおよびUNIXのシェルは両方とも*
を拡張して複数のファイルに一致させ、DOSコマンドラインは%
を変数の参照に使用します。
同様に、非ASCII文字をファイル名とHelixサーバ識別子に使用することは可能ですが、それらの文字をコマンドラインから入力するときに、プラットフォーム特有の解決策が必要になることがあります。 GUIベースのファイルマネージャのユーザは、このようなファイルを、ドラッグアンドドロップ操作で取り扱うことができます。