Helix Core P4コマンドリファレンス (2019.1)

ファイル指定

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

シンタックスフォーム

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

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番目のリビジョンを、クライアントワークスペースにコピーします。

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

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