ファイル指定

クライアントシンタックス、ディポシンタックス、 またはローカルシンタックス中のあらゆるHelixサーバコマンドにおいて、 どんなファイルでも指定できます。ワークスペース名とディポ名は、 同じネームスペースを共有しています。Perforceサービスでは、 ワークスペース名とディポ名が常に区別されます。

シンタックスフォーム

ローカルシンタックスは、ローカルシェルかOSで指定されたファイル名を 参照します。ローカルシンタックスで参照されるファイル名は、 ファイル名の絶対パス、または現在の作業ディレクトリを起点とする 相対パスで指定可能です。(相対パスの構成要素は、 ファイル指定子の先頭部分にのみ指定できます)

Helixサーバには、OSが異なっても変わることのない 独自のファイル指定方法があります。 ファイルがクライアントルートを起点とする相対パスで指定された場合、ファイルはクライアントシンタックスで 示されているということになります。また、ディポの最上層を起点とする相対パスで指定された場合は、 ディポシンタックスで示されているということになります。 このどちらかで指定されたファイルは、 Helixサーバシンタックスで指定されたと言えます。

Helixサーバのファイル指定子は常に2つのスラッシュ(//)で始まり、 その後にクライアントかディポの名前、さらにその後にクライアントか ディポのルートディレクトリを起点とするファイルのフルパス名が続きます。

クライアントシンタックスおよびディポシンタックスのパス構成要素は、 ローカルのOSやシェルが使用する構成要素区切り文字に関係なく、 常にスラッシュ(/)で区切られます。

各シンタックスの例を以下に示します。

構文

ローカルシンタックス

/staff/bruno/myworkspace/file.c for Linux

c:\staff\bruno\myworkspace\file.c for Windows

ディポシンタックス

//depot/source/module/file.c

クライアントシンタックス

//myworkspace/file.c

ワイルドカード

Helixサーバシステムでは、 これらのワイルドカードが使用できます。

ワイルドカード 説明

*

1つのディレクトリ内で、スラッシュを除くすべての文字に一致します。

...

現在の作業ディレクトリおよびすべてのサブディレクトリ内で、 すべてのファイルに一致します。複数のサブディレクトリにわたり、 スラッシュも含めてすべて一致します。

%%1 - %%9

ビューの中で使用されるとき、ファイル名中の部分文字列を 再配列するための位置指定子です。

ワイルドカードの表記例を以下に示します。

表記 一致するファイル

J*

現在のディレクトリにある、Jで始まるファイル

*/help

現在のサブディレクトリにある、helpという名前のすべてのファイル

//gra*/dep* //graph/depot///graphs/depotsgravity/deposits (//graph/depot/release1/を除く)

./...

現在のディレクトリおよびそのサブディレクトリにあるすべてのファイル

./....c

現在のディレクトリおよびそのサブディレクトリにある、 最後に.cが付くすべてのファイル

/usr/bruno_ws/...

/usr/bruno_wsに含まれるすべてのファイル

//companytools/...

//bruno_ws/...

companytoolsという名前のディポまたはbruno_wsという名前の ワークスペースにあるすべてのファイル

//depot/...

ディポにあるすべてのファイル(デフォルト名は「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

この例ではクライアントビューマッピングで位置指定子を使用し、同期したファイルをファイルタイプごとに再配置しています。指定された拡張子(.txtなど)を持つディポファイルは、拡張子名(/txtなど)を持つワークスペースディレクトリに同期されます。

  • ディポに対して次の操作を行います。
    • %%1を使用して位置1にファイル名を指定します
    • %%2を使用して位置2にファイル拡張子を指定します
  • ワークスペースに対して次の操作を行います。
    • 拡張子%%2がファイル名%%1の前に配置されるように順序を逆にします
    • ディレクトリのスラッシュ「/」の代わりにファイル拡張子のピリオド「.」を指定します

最新バージョンをディポからワークスペースに読み込みます。

sync -f //depot/dir1/...

ディポファイルの拡張子 ... ワークスペースディレクトリ内のファイルの結果 ...

//depot/dir1/readme.doc

//bruno_ws/filesbytype/doc/readme

//depot/dir1/readme.md /Users/bruno_ws/filesbytype/md/readme
//depot/dir1/readme.pl /Users/bruno_ws/filesbytype/pl/readme
//depot/dir1/readme.txt /Users/bruno_ws/filesbytype/txt/readme

リビジョン指定子の使用

ファイル指定子は、#または@を付加することにより 修正できます。

ファイル指定子#および@は、ディポに保存されたファイルの 特定リビジョンを参照するために使用します。

修飾子 説明

file#n

リビジョン指定子: filen番目のリビジョン。

file#none

file#0

非存在リビジョン: fileのリビジョンがディポ内に存在する場合、 そのリビジョンは無視されます。

これは、ファイルをクライアントワークスペースからは削除するが、ディポ内にはそのまま残す必要がある場合に便利です。 例えば、p4 syncfile#noneのように指定します。

ファイル指定子#0は、#noneと同様に使用することができます。 存在しないリビジョンとは、1番目のリビジョンがディポにサブミットされる前に 「存在していた」リビジョンと考えることができます。

file#head

fileの最新リビジョン(最新バージョン)。 これは、明確に言及されている場合を除き、リビジョン指定子なしで ファイルを参照することと同じです。

file#have

現在のクライアント上のリビジョン: p4 syncコマンドで最後にクライアントワークスペースに 同期されたファイルのリビジョン。

file@n

チェンジ番号: チェンジリストnがサブミットされた直後の fileのリビジョン。

file@=n

チェンジ番号: 指定されたチェンジリスト番号nに該当する fileのリビジョン。

nには、サブミット済みまたは保留状態のチェンジ番号を 指定することができます。

nに、作業中(非保留状態)のチェンジ番号を指定することはできません。

file@labelname

ラベル名: ラベルlabelname内のfileのリビジョン。

file@clientname

クライアント名: クライアントワークスペースclientnameに最後に取り込まれた fileのリビジョン。

削除されたファイル(つまり、最新リビジョンでdeleteの目的でマーキングされたファイル)は、 ワークスペースの一部であるとはみなされません。

file@datespec

日付と時刻: 指定した日付と時刻におけるfileのリビジョン。

時刻を指定しない場合、指定した日の午前00:00:00における 最新リビジョンが返されます。

日付と時刻は、 yyyy/mm/dd:hh:mm:ssまたは yyyy/mm/ddhh:mm:ssの形式で指定します (日付と時刻の間にスペースかコロンのどちらかを入れます)。

日付指定子@nowは、現在の日時を指定するのと同様に 使用することができます。

リビジョン指定子は、一度に多くのファイルを操作するために 使用することができます。p4 sync //myclient/...#4は、作業状態にないすべてのファイルの4番目のリビジョンを、 クライアントワークスペースにコピーします。

ファイルを日付と時刻で指定する場合(つまり file@datespecという形式の指定子を使用する場合)、 ローカルシェルによって日付指定子が単一トークンとして 解釈される必要があります。日付のみではなく時刻を指定するために日付指定子を使用する場合は、 日付指定子の前後に引用符を使用しなければならないことがあります。

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

Helixサーバのファイル指定文字は、 ローカルシェルによって途中で取得され解釈されてしまうことがあります。 そのような文字は、使用する前にエスケープしておく必要があります。 例えば、#はたいていのUNIXシェルでコメント文字として使用され、 /は(Helixサーバ以外の)DOSコマンドによって オプション指定子として解釈されます。 スペースが入っているファイル名は、コマンドラインにおいて引用符で 囲まなければならないことがあります。

これらの問題とプラットフォーム固有の問題については、該当するプラットフォームの リリースノートを参照してください。

リビジョン範囲の使用

Helixサーバコマンドのいくつかは、リビジョン範囲を使用して ファイル引数を変更することができます。 リビジョン範囲は2つの別個のリビジョン指定子で、 カンマによって区切られます。 例えば、p4 changesfile#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 changesp4 fixesp4 integratep4 jobsおよびp4 verifyコマンドとともに使用される場合、上記のように解釈されます。

  • 指定した範囲内で最大番号のリビジョンのみに対して、コマンドを実行します。 例えば、コマンドp4 printfile@30,50は、チェンジリスト30~50で サブミットされたファイルfileの、最大番号のリビジョンを出力します。これは、p4 printfile@50とは次のように異なります。 例えば、ファイルfileのリビジョン#1がチェンジリスト20でサブミットされ、 ファイルfileのリビジョン#2がチェンジリスト60でサブミットされた場合、 p4 printfile@30,50は何も出力しません。 これに対し、p4 print file@50は、 ファイルfileのリビジョン#1を出力します。

    コマンドp4 filesp4 printおよびp4 syncはすべて、 このようにリビジョン範囲を使用します。

リビジョン範囲は、非常に強力なものとなりえます。例えば、p4 changesfile#3,@labelnameは、ファイルfileの3番目のリビジョンから、 ラベルlabelnameに保存されているリビジョンまでをサブミットしたすべての チェンジリストをリストします。

ファイル名とエンティティに関する文字の制限

ユーザやクライアントなど、ファイルおよびエンティティに名前を付ける時には、 次の制限に注意してください。

文字 Helixサーバ 使用法 使用不可のエンティティ(作成方法が次の場合)

...

*

%%

再帰的サブディレクトリワイルドカード

ファイル一致ワイルドカード

位置置換ワイルドカード

p4 user, p4 client, p4 depot, p4 label, p4 job, p4 stream

/

パス名構成要素の区切り

次のコマンドで使用することができます: p4 userp4 labelp4 job

p4 client, p4 depot

ファイル名には使用できません

\

Helixサーバに特別な意味はありません。

(使用できますが、Microsoft Windowsではバックスラッシュをパス名構成要素の 区切り文字として使用していることに注意してください)

@

チェンジリスト、ラベル、クライアント、または日付指定子の識別子のプレフィックス。

p4 user, p4 client, p4 depot, p4 label, p4 job, p4 stream

#

リビジョン番号の指定

p4 user, p4 client, p4 depot, p4 label, p4 job, p4 stream

1または1234

チェンジリスト番号は数字のみです。

数字のみの識別子はユーザ、クライアント、ディポ、ラベル、ジョブ、 またはストリームには使用できないため、次のようなものを検討してください: 1aまたは1_234

Helixサーバリビジョン指定子ワイルドカード(@#)、 ファイル一致ワイルドカード(*)、 または位置置換ワイルドカード(%%)が ファイル名または任意のディレクトリ構成要素に含まれている ファイルを参照するには、文字の16進値の ASCII表現を使用します。ASCII拡張は、 次の4つの文字にのみ適用されます。

文字 ASCII拡張

@

%40

#

%23

*

%2A

%

%25

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ベースのファイルマネージャのユーザは、 このようなファイルを、ドラッグアンドドロップ操作で取り扱うことができます。