P4コマンドを発行する

本章ではp4コマンドについての基本的な情報を、コマンドライン構文、引数、オプションも含めて説明します。コマンドの構文に関する詳細については、『P4コマンドリファレンス』を参照してください。

いくつかのコマンドには管理者権限またはスーパーユーザ権限が必要です。詳細については、『Perforceサーバ管理者ガイド: 基本』を参照してください。

コマンドラインの構文

コマンドの基本構文は以下のとおりです。

p4 [global options] command [command-specific options] [command arguments]

以下のオプションはすべてのp4コマンドで使用できます。

グローバルオプション

説明および使用例

-c clientname

コマンドに関連するクライアントワークスペースを指定します。P4CLIENTをオーバーライドします。

p4 -c bruno_ws edit //depot/dev/main/jam/Jambase

-C charset

クライアントワークスペースの文字セットを指定します。P4CHARSETをオーバーライドします。

p4 -C utf8 sync

-d directory

環境変数PWDの設定をオーバーライドし、現在のディレクトリを指定します。

p4 -d ~c:\bruno_ws\dev\main\jam\Jambase Jamfile

-G

すべての出力を整列されたPythonディクショナリオブジェクトとしてフォーマットします(Pythonによるスクリプト作成用)。

p4 -G info

-H host

P4HOSTの設定をオーバーライドし、クライアントワークスペースのホスト名を指定します。

p4 -H deneb print //depot/dev/main/jam/Jambase

-I

進捗インジケータ(利用可能である場合)を使用することを指定します。このオプションは、-sおよび-Gオプションと同時に使用できません。

現時点では、進捗インジケータは2つのコマンドでのみサポートされています。それらはp4 -I submitによるチェンジリストのサブミットと、p4 -I sync -qによる「サイレントな」ファイルの同期です。

-L language

Perforceサービスからのエラーメッセージに使用する言語を指定します。P4LANGUAGEをオーバーライドします。このオプションを機能させるためには、管理者が英語以外のメッセージのサポートをデータベースにロードしておく必要があります。

p4 -L language info

-p port

P4PORTの設定をオーバーライドし、Perforceサービスへの接続に使用されるプロトコル、ホスト、ポート番号を指定します。

p4 -p ssl:deneb:1818 clients

-P password

P4PASSWDの設定をオーバーライドし、パスワードを指定します。通常、-u usernameオプションと組み合わせて使用します。

p4 -u earl -P secretpassword job

-r retries

ネットワークがタイムアウトした場合にコマンド(特にp4 sync)を再試行する回数を指定します。

-Q charset

コマンドの入出力に使用する文字セットを指定します。P4CHARSETの値をUTF-16またはUTF-32に設定している場合、p4コマンドラインクライアントを使用するには、P4COMMANDCHARSETをUTF-16またはUTF-32以外の値に設定する必要があります。

p4 -Q utf32 -C utf8 sync

-s

出力の各行の先頭に、タグを付加します(スクリプト作成用)。

p4 -s info

-u username

P4USERの設定をオーバーライドし、Perforeユーザ名を指定します。

p4 -u bill user

-x filename

指定したファイルから1行につき1つの引数を読み取ります。引数を標準入力から読み取るには、-x -と指定します。

p4 -x myargs.txt

-z tag

スクリプト作成を容易にするため、p4 fstatにより生成される形式でレポートコマンドの出力を表示します。

p4 -z tag info

-q

クワイエットモード。すべての情報提供メッセージを抑止し、警告またはエラーのみを報告します。

-V

p4実行プログラムのバージョンを表示します。

特定のコマンドのオプションを表示するには、p4 helpコマンドを発行します。例:

$ p4 help add

    add -- Open a new file to add it to the depot

    p4 add [ -c changelist# ] [ -d -f -I -n ] [ -t filetype ] file ...

     Open a file for adding to the depot.  If the file exists on the
     client, it is read to determine if it is text or binary. If it does
     not exist, it is assumed to be text.  To be added, the file must not
     already reside in the depot, or it must be deleted at the current
     head revision.  Files can be deleted and re-added.
[…]

グローバルオプション、コマンド、コマンド固有のオプションについての完全なリストは、『P4コマンドリファレンス』を参照してください。

コマンドラインでファイル名を指定する

Perforceの日常操作の大部分は、ファイルの管理です。p4コマンドでは以下のようにファイル名を指定できます。

  • ローカルシンタックス: ローカルシェルまたはOSで指定されるファイル名。

    ファイル名は、絶対パス(例: c:\bruno_ws\dev\main\jam\fileos2.c)または現在のディレクトリに対する相対パス(例: .\jam\fileos2.c)により指定することができます。

    相対パスのコンポーネント(.または..)を固定パスのコンポーネントの後に指定することはできません。例えば、mysub/mydir/./here/file.cmysub/mydirという固定コンポーネントの後にドット(.)が指定されているため、無効です。

  • ディポシンタックス: 使用されるフォーマットは//depotname/file_pathで、ファイルのパス名をディポのルートディレクトリに相対して指定します。パスのコンポーネントは、スラッシュで区切られます。例: //depot/dev/main/jam/Jambase

  • クライアントシンタックス: 使用されるフォーマットは//workspacename/file_pathで、ファイルのパス名をクライアントルートディレクトリに相対して指定します。パスのコンポーネントは、スラッシュで区切られます。例: //ona-agave/dev/main/jam/Jambase

Example 11. 同じファイルを異なるシンタックスにより参照する

ローカルシンタックス: p4 delete c:\bruno_ws\dev\main\jam\Jambase

ディポシンタックス: p4 delete //depot/dev/main/jam/Jambase

クライアントシンタックス: p4 delete //bruno_ws/dev/main/jam/Jambase

Perforceのワイルドカード

ファイルの集合を操作するコマンドのために、Perforceでは2種類のワイルドカードがサポートされています。

ワイルドカード

解説

*

スラッシュを除くすべての文字に一致します。単一のディレクトリ内のみ照合します。お使いのプラットフォームによっては大文字と小文字を区別します。

...

スラッシュを含むすべての文字に一致します。再帰的に(指定されたディレクトリおよびその配下のディレクトリ内すべてを)照合します。

Perforceワイルドカードは、以下の例のようにローカルシンタックス、Perforceシンタックスの両方で使用できます。

表記

意味

J*

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

*/help

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

./...

現在のディレクトリとそのサブディレクトリに属するすべてのファイル

./....c

現在のディレクトリとそのサブディレクトリに属し、.cで終わるすべてのファイル

/usr/bruno/...

/usr/brunoに属するすべてのファイル

//bruno_ws/...

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

//depot/...

depotという名前のディポ内のすべてのファイル

//...

全ディポ内のすべてのファイル

ワイルドカード*は、コマンドがPerforceサービスに送られる前にローカルOSにより拡張されます。ローカルOSによってワイルドカード*が拡張されないようにするには、これを引用符で囲むか、前に逆スラッシュを付けます。

Note

ワイルドカード"..."はp4 addコマンドでは使用できません。ワイルドカード"..."はPerforceサービスによって拡張されますが、サービスでは追加されるファイルを判断できないため、ワールドカードを拡張できません。ワイルドカード*は、PerforceではなくOSシェルにより拡張されるため、p4 addで使用できます。

ファイル名と識別子における制限

ファイル名、パス名、識別子でのスペースの使用

スペースを含むファイルまたはディレクトリは、引用符を使用して囲みます。例:

"//depot/dev/main/docs/manuals/recommended configuration.doc"

その他のPerforceオブジェクト、例えばブランチ名、クライアント名、ラベル名などの中にスペースを指定すると、そのスペースはPerforceサービスによって自動的にアンダースコアに変換されます。

長さの制限

ブランチやクライアントワークスペースなどのPerforceオブジェクトに付ける名前は、1,024文字を超えてはなりません。

予約文字

デフォルトでは、以下に示す予約文字をPerforce識別子またはPerrforceにより管理されるファイルの名前に使用することはできません。

予約文字

理由

@

日付、ラベル名、チェンジリスト番号に使用するファイルリビジョン指定子

#

ファイルリビジョン番号

*

ワイルドカード

...

ワイルドカード(再帰的)

%%1 - %%9

ワイルドカード(位置的)

/

パス名コンポーネント分離記号

上記の文字には、衝突する別の用法があります。その衝突には以下のものが含まれます。

  • UNIXではパスコンポーネントを/で区切りますが、DOSコマンドでは多くの場合、/をコマンドラインスイッチと解釈します。

  • UNIXシェルではほとんどの場合、#をコメントの始まりと解釈します。

  • DOSシェルとUNIXシェルの両方とも、複数のファイルと照合するよう*を自動的に拡張し、DOSコマンドラインでは%を使って変数を表します。

これらの文字をファイル名やパス名に指定するには、以下に示すASCII文字表現の16進値を使用します。

文字

ASCII

@

%40

#

%23

*

%2A

%

%25

ファイルを追加する際に字義通りにファイル名を指定し、後にASCII拡張を使用してそのファイル名を参照します。例えば、recommended@configuration.docというファイルを追加するには、以下のコマンドを発行します。

p4 add -f //depot/dev/main/docs/manuals/recommended@configuration.doc

チェンジリストをサブミットすると、文字は自動的に拡張され、変更サブミットフォームに次のように表示されます。

//depot/dev/main/docs/manuals/recommended%40configuration.doc

ファイル追加を含むチェンジリストをサブミットした後、ASCII拡張を使用して、ファイルをワークスペースに同期させるか、ワークスペース内で編集する必要があります。例えば次のようにします。例:

p4 sync //depot/dev/main/docs/manuals/recommended%40configuration.doc

特殊文字の@#*、または%をエスケープするという必要条件は、クライアントワークスペース仕様のRoot:フィールドまたはAltRoots:フィールドでそれらの文字を使用する場合にも適用されます。それぞれ、%40%23%2A%25を用いてエスケープしてください。

拡張(非ASCII)文字を含むファイル名

ファイル名およびPerforce識別子には非ASCII文字を使用できますが、これらの文字をコマンドラインから入力するには、プラットフォーム特有の解決法が必要な場合があります。PerforceをUnicodeモードで使用する場合、すべてのユーザがP4CHARSETを適切に設定していなければなりません。P4CHARSETの設定に関して詳しくは、『P4コマンドリファレンス』および『Perforce国際語モードに関する注意事項』を参照してください。

国際語環境では、共通コードページまたはロケール設定を使用して、組織内のすべてのマシン間ですべてのファイル名が正しく表示されるようにしてください。コードページまたはロケールを設定するには、次のようにします。

  • Windowsの場合は、: [コントロール パネル]の[地域設定]アプレットを使用してください。

  • UNIXの場合は、環境変数LOCALEを設定してください。

ファイルリビジョンを指定する

ファイルをディポにサブミットするたびに、リビジョン番号は1つずつ増加します。最新リビジョンより前のリビジョンを指定するには、リビジョン指定子#を使用してリビジョン番号を指定するか、@を使用して作業中のファイルのバージョンに対応する日付、チェンジリスト、クライアントワークスペースまたはラベルを指定します。リビジョン仕様を使用して、コマンドの有効範囲を特定のファイルリビジョンに制限することができます。

Warning

OSシェルの中には、Perforceリビジョン文字#が語の最初にある場合、これをコメント文字として処理するものがあります。ご使用のシェルがこれに該当する場合は、p4コマンドで使用する際に#をエスケープしてください。

以下の表に、ファイルリビジョンの様々な指定方法を示します。

対象リビジョン

構文と例

リビジョン番号

file#n

例:

p4 sync //depot/dev/main/jam/Jambase#3

ファイルJambaseのリビジョン3を参照

特定のチェンジリストの時点でサブミットしたリビジョン

file@changelist_number

例:

p4 sync //depot/dev/main/jam/Jambase@126

チェンジリストが126へサブミットされたときのJambaseのバージョンを参照。Jambaseへの変更がチェンジリスト126でサブミットされなかった場合も有効。

p4 sync //depot/...@126

チェンジリスト126におけるディポ全体の状態を参照(番号付きチェンジリストの解説はチェンジリストの管理に記載)。

特定のラベルにおけるリビジョン

file@labelname

例:

p4 sync //depot/dev/main/jam/Jambase@beta

betaというラベルが付けられたJambaseのリビジョン。ラベルの詳細については、“ラベル”を参照してください。

特定のクライアントワークスペースに最後に同期されたリビジョン

file@clientname

例:

p4 sync //depot/dev/main/jam/Jambase@bruno_ws

クライアントワークスペースbruno_wsに最後に同期されたJambaseのリビジョン。

ファイルを削除

file#none

例:

p4 sync //depot/dev/main/jam/Jambase#none

Jambaseをクライアントワークスペースから削除。

ファイルの最新リビジョン

file#head

例:

p4 sync //depot/dev/main/jam/Jambase#head

p4 sync //depot/dev/main/jam/Jambaseと同じ。

(リビジョン指定子を省略すると、headリビジョンが同期されます。)

ワークスペースに最後に同期されたリビジョン

file#have

例:

p4 files //depot/dev/main/jam/Jambase#have

特定の日におけるディポ内のファイルの最新リビジョン

file@date

例:

p4 sync //depot/dev/main/jam/Jambase@2011/05/18

2011年5月18日午前0時現在のJambaseの最新リビジョン。

特定の日の特定時刻におけるディポ内のファイルの最新リビジョン

file@"date[:time]"

例:

p4 sync //depot/dev/main/jam/Jambase@"2011/05/18"

日付をYYYY/MM/DDの形式で指定し、時刻を24時間表記でHH:MM:SSの形式で指定します。時刻のデフォルトは、00:00:00です。

日付と時刻を単一のスペースまたはコロンで区切ります。(スペースで区切る場合、日付と時刻の指定全体を二重引用符で囲む必要があります。)

Example 12. リビジョン指定子を使ってファイルを取得する

ブルーノはチェンジリスト番号30に存在していたすべてのリビジョンを取得したいので、次のように入力します。

p4 sync //depot/dev/main/jam/Jambase@30

別のユーザが自分のワークスペースに、ブルーノが同期させたものと同じファイルリビジョンを同期させることができます。それには、ブルーノのワークスペースを次のように指定します。

p4 sync @bruno_ws

Example 13. クライアントワークスペースからすべてのファイルを削除する

p4 sync ...#none

ファイルはワークスペースから削除されますが、ディポからは削除されません。

日付と時刻の表記

日付と時刻の表記は、Perforceサービスをホスティングするマシンのタイムゾーンから取得されます。日付、時刻、グリニッジ標準時(GMT)からのオフセット、および現在のタイムゾーンを表示するには、p4 infoコマンドを実行します。バージョン化サービスは、時刻をグリニッジ標準時の1970年1月1日00時00分00秒以降の秒数として表します。したがって、タイムゾーンをまたがって移動すると、サービスに保存された時刻は新しいタイムゾーンで正しく報告されます。

リビジョン範囲

Perforceコマンドには、ファイルリビジョンの範囲を限定して実行できるものがあります。リビジョン範囲を指定するには、開始リビジョンと終了リビジョンをカンマで区切り、#3,4のように指定します。

リビジョン範囲の指定が可能なコマンドを以下に示します。

  • p4 annotate

  • p4 changes

  • p4 dirs

  • p4 filelog

  • p4 files

  • p4 fixes

  • p4 grep

  • p4 integrate

  • p4 interchanges

  • p4 jobs

  • p4 labels

  • p4 labelsync

  • p4 list

  • p4 merge

  • p4 print

  • p4 sizes

  • p4 sync

  • p4 tag

上記のコマンドにおいて、

  • 単一のリビジョンを指定する場合、コマンドの実行範囲は#1から指定したリビジョンまでになります(ただし、p4 syncp4 printp4 filesを除きます。これらのコマンドでは範囲内の最新のリビジョンが処理されます)。

  • リビジョン範囲を完全に省略すると、コマンドはすべてのファイルリビジョンに作用します。

Example 14. リビジョン範囲を指定して変更を一覧表示する

リリースマネージャは、2010年7月のJamプロジェクトに対するすべての変更の一覧表を見る必要があります。次のように入力します。

p4 changes //depot/dev/main/jam/...@2010/7/1,2010/8/1

生成される変更のリストは次のとおりです。

Change 673 on 2010/07/31 by bruno@bruno_ws 'Final build for QA'
Change 633 on 2010/07/1 by bruno@bruno_ws 'First build w/bug fix'
Change 632 on 2010/07/1 by bruno@bruno_ws 'Started work'

レポートコマンド

有用なレポートコマンドを以下の表に示します。

表示内容

使用するコマンド

p4コマンドを短い説明付きでリストします。

p4 help commands

特定のcommandについての詳細なヘルプを示します。

p4 help command

すべてのPerforceコマンドに共通のコマンドラインオプションを記述します。

p4 help usage

Perforceビュー構文について説明します。

p4 help views

p4 helpコマンドに与えられるすべての引数について記述します。

p4 help

環境に対して構成されたPerforceの設定

p4 info

クライアントワークスペース内のファイルリビジョン

p4 have

p4 syncの実行結果をプレビューします(転送されるファイルを確認するため)

p4 sync -n

p4 deleteの実行結果をプレビューします(削除目的でマーキングされるファイルを確認するため)

p4 delete -n files

Perforceフォームを使用する

Perforceコマンドのうち、p4 clientp4 submitなどは、テキストエディタを使用してフォームを表示し、ユーザがそのフォームからコマンドを完了させるのに必要な情報(例えばサブミットする変更の説明など)を入力します。ユーザがフォームを変更し、保存してエディタを終了すると、Perforceはフォームを解析し、フォーム内の情報を使用してコマンドを完了させます。(Perforceフォームの表示および編集に使用されるテキストエディタを指定するには、P4EDITORを設定します。)

Perforceフォームに情報を入力する際は、次の規則に従ってください。

  • フィールド名([View:]など)は左づめ(インデントなし)で、末尾にコロンを付けます。

  • フィールド値(入力値)はフィールド名と同じ行に記述するか、フィールド名の下の行にタブでインデントを付けて記述します。

いくつかのフィールド名、例えばp4 clientフォームの[Client:]フィールドなどは、単一の値になります。他のフィールド、例えば[Description:]などは、テキストブロックの形式になります。さらに他のフィールド、例えば[View:]などは、1行に複数の値を取ります。

クライアントワークスペースフォームの[Client:]フィールドなどの値は変更できません。他のフィールド、例えばp4 submitの[Description:]などは、値を変更しなければなりません。変更する必要のあるフィールドを変更しない場合、または変更不可の値を変更しようとすると、Perforceによりエラーが表示されます。変更可能なフィールドに関して詳しくは、『P4コマンドリファレンス』を参照するか、p4 help commandを使用してください。