P4コマンドを発行する
本章ではp4コマンドについての基本的な情報を、コマンドライン構文、引数、オプションも含めて説明します。コマンドの構文に関する詳細については、『P4コマンドリファレンス』を参照してください。
いくつかのコマンドには管理者権限またはスーパーユーザ権限が必要です。詳細については、『Perforceサーバ管理者ガイド: 基本』を参照してください。
コマンドラインの構文
コマンドの基本構文は以下のとおりです。
p4 [global options
] command
[command-specific options
] [command
arguments
]
以下のオプションはすべてのp4コマンドで使用できます。
グローバルオプション |
説明および使用例 |
---|---|
|
コマンドに関連するクライアントワークスペースを指定します。 p4 -c bruno_ws edit //depot/dev/main/jam/Jambase |
|
クライアントワークスペースの文字セットを指定します。 p4 -C utf8 sync |
|
環境変数 p4 -d ~c:\bruno_ws\dev\main\jam\Jambase Jamfile |
|
すべての出力を整列されたPythonディクショナリオブジェクトとしてフォーマットします(Pythonによるスクリプト作成用)。 p4 -G info |
|
p4 -H deneb print //depot/dev/main/jam/Jambase |
|
進捗インジケータ(利用可能である場合)を使用することを指定します。このオプションは、 現時点では、進捗インジケータは2つのコマンドでのみサポートされています。それらはp4 -I submitによるチェンジリストのサブミットと、p4 -I sync -qによる「サイレントな」ファイルの同期です。 |
|
Perforceサービスからのエラーメッセージに使用する言語を指定します。
p4 -L |
|
p4 -p ssl:deneb:1818 clients |
|
p4 -u earl -P secretpassword job |
|
ネットワークがタイムアウトした場合にコマンド(特にp4 sync)を再試行する回数を指定します。 |
|
コマンドの入出力に使用する文字セットを指定します。 p4 -Q utf32 -C utf8 sync |
|
出力の各行の先頭に、タグを付加します(スクリプト作成用)。 p4 -s info |
|
p4 -u bill user |
|
指定したファイルから1行につき1つの引数を読み取ります。引数を標準入力から読み取るには、 p4 -x myargs.txt |
|
スクリプト作成を容易にするため、p4 fstatにより生成される形式でレポートコマンドの出力を表示します。 p4 -z tag info |
|
クワイエットモード。すべての情報提供メッセージを抑止し、警告またはエラーのみを報告します。 |
|
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.c
はmysub/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シンタックスの両方で使用できます。
表記 |
意味 |
---|---|
|
|
|
現在のサブディレクトリ内の |
|
現在のディレクトリとそのサブディレクトリに属するすべてのファイル |
|
現在のディレクトリとそのサブディレクトリに属し、 |
|
|
|
|
|
|
|
全ディポ内のすべてのファイル |
ワイルドカード*
は、コマンドが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により管理されるファイルの名前に使用することはできません。
予約文字 |
理由 |
---|---|
|
日付、ラベル名、チェンジリスト番号に使用するファイルリビジョン指定子 |
|
ファイルリビジョン番号 |
|
ワイルドカード |
|
ワイルドカード(再帰的) |
|
ワイルドカード(位置的) |
|
パス名コンポーネント分離記号 |
上記の文字には、衝突する別の用法があります。その衝突には以下のものが含まれます。
-
UNIXではパスコンポーネントを
/
で区切りますが、DOSコマンドでは多くの場合、/
をコマンドラインスイッチと解釈します。 -
UNIXシェルではほとんどの場合、
#
をコメントの始まりと解釈します。 -
DOSシェルとUNIXシェルの両方とも、複数のファイルと照合するよう
*
を自動的に拡張し、DOSコマンドラインでは%
を使って変数を表します。
これらの文字をファイル名やパス名に指定するには、以下に示すASCII文字表現の16進値を使用します。
文字 |
ASCII |
---|---|
|
|
|
|
|
|
|
|
ファイルを追加する際に字義通りにファイル名を指定し、後に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コマンドで使用する際に#
をエスケープしてください。
以下の表に、ファイルリビジョンの様々な指定方法を示します。
対象リビジョン |
構文と例 |
---|---|
リビジョン番号 |
例: p4 sync //depot/dev/main/jam/Jambase#3
ファイル |
特定のチェンジリストの時点でサブミットしたリビジョン |
例: p4 sync //depot/dev/main/jam/Jambase@126
チェンジリストが126へサブミットされたときの p4 sync //depot/...@126 チェンジリスト126におけるディポ全体の状態を参照(番号付きチェンジリストの解説はチェンジリストの管理に記載)。 |
特定のラベルにおけるリビジョン |
例: p4 sync //depot/dev/main/jam/Jambase@beta
|
特定のクライアントワークスペースに最後に同期されたリビジョン |
例: p4 sync //depot/dev/main/jam/Jambase@bruno_ws
クライアントワークスペース |
ファイルを削除 |
例: p4 sync //depot/dev/main/jam/Jambase#none
|
ファイルの最新リビジョン |
例: p4 sync //depot/dev/main/jam/Jambase#head p4 sync //depot/dev/main/jam/Jambaseと同じ。 (リビジョン指定子を省略すると、headリビジョンが同期されます。) |
ワークスペースに最後に同期されたリビジョン |
例: p4 files //depot/dev/main/jam/Jambase#have |
特定の日におけるディポ内のファイルの最新リビジョン |
例: p4 sync //depot/dev/main/jam/Jambase@2011/05/18
2011年5月18日午前0時現在の |
特定の日の特定時刻におけるディポ内のファイルの最新リビジョン |
例: p4 sync //depot/dev/main/jam/Jambase@"2011/05/18"
日付を 日付と時刻を単一のスペースまたはコロンで区切ります。(スペースで区切る場合、日付と時刻の指定全体を二重引用符で囲む必要があります。) |
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 sync、p4 print、p4 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 |
特定の |
p4 help |
すべての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 |
Perforceフォームを使用する
Perforceコマンドのうち、p4 clientやp4 submitなどは、テキストエディタを使用してフォームを表示し、ユーザがそのフォームからコマンドを完了させるのに必要な情報(例えばサブミットする変更の説明など)を入力します。ユーザがフォームを変更し、保存してエディタを終了すると、Perforceはフォームを解析し、フォーム内の情報を使用してコマンドを完了させます。(Perforceフォームの表示および編集に使用されるテキストエディタを指定するには、P4EDITOR
を設定します。)
Perforceフォームに情報を入力する際は、次の規則に従ってください。
-
フィールド名([
View:
]など)は左づめ(インデントなし)で、末尾にコロンを付けます。 -
フィールド値(入力値)はフィールド名と同じ行に記述するか、フィールド名の下の行にタブでインデントを付けて記述します。
いくつかのフィールド名、例えばp4 clientフォームの[Client:
]フィールドなどは、単一の値になります。他のフィールド、例えば[Description:
]などは、テキストブロックの形式になります。さらに他のフィールド、例えば[View:
]などは、1行に複数の値を取ります。
クライアントワークスペースフォームの[Client:
]フィールドなどの値は変更できません。他のフィールド、例えばp4 submitの[Description:
]などは、値を変更しなければなりません。変更する必要のあるフィールドを変更しない場合、または変更不可の値を変更しようとすると、Perforceによりエラーが表示されます。変更可能なフィールドに関して詳しくは、『P4コマンドリファレンス』を参照するか、p4 help
command
を使用してください。