スクリプトとレポート
本章では、スクリプト内でのp4コマンドの使用方法およびレポート目的でのこのコマンドの使用方法について詳しく説明します。特定のコマンドに関する詳細な説明は、『P4コマンドリファレンス』を参照するか、p4 helpコマンドを発行してください。
スクリプトとレポートの共通オプション
以下のコマンドラインオプションにより、コマンドライン上およびスクリプト内で設定を指定することができます。詳細な情報は、『P4コマンドリファレンス』のグローバルオプションに関する説明を参照してください。
オプション |
解説 |
---|---|
|
コマンドを |
|
クライアントワークスペース名を指定します。 |
|
すべての出力(およびフォームコマンドに対して、 |
|
Perforceサービスのホストおよびポート番号とともに、接続に使用されるプロトコルを指定します。 |
|
設定されている場合、ユーザパスワードを指定します。(コマンドを発行するたびにパスワードを指定する代わりに)スクリプトでコマンドの実行前にログインするようにしたい場合は、p4 loginコマンドを使用します。例: echo 'mypassword' | p4 login |
|
Perforceコマンドにより生成された出力の各行の最初に説明的なフィールド( |
|
Perforceユーザ名を指定します。 |
|
指定のファイルから1行ごとに1つずつ、引数を読み込みます。 |
Perforceフォームでスクリプトを記述する
p4 clientやp4 submitコマンドのように、スクリプトがユーザにフォームへの入力を要求するp4コマンドを発行する場合、-o
オプションを使用して標準出力にフォームを書き込み、-i
オプションを使用して標準入力から編集後のフォームを読み込みます。
例えば、UNIXでスクリプトを使用してジョブを作成するには、以下のようにします。
-
p4 job -o > temp1コマンドを発行し、空白のジョブ仕様をテキストファイルに書き込みます。
-
ジョブに必要な変更を加えます。例:
sed 's/<enter description here>/Crashes on exit./' temp1 > temp2
-
p4 job -i < temp2コマンドを発行してジョブを保存します。
一時ファイルを作成せずに上記の処理を実行するには、次のコマンドを発行します。
p4 job -o | sed 's/<enter description here>/Crashes on exit./' | p4 job -i
フォームを表示するコマンドは以下のとおりです。
-
p4 branch
-
p4 change
-
p4 client
-
p4 job
-
p4 label
-
p4 submit(チェンジリストの作成にはp4 change -oを使用。チェンジリストのサブミット時にデフォルトのチェンジリストに説明を入れるには、p4 submit -d "A changelist description"を使用。)
-
p4 stream
-
p4 user
ファイルのレポート
次のセクションでは、ファイルの状態と場所に関する情報を提供するコマンドを説明します。次の表に、基本的かつ非常に有用なレポートコマンドを示します。
表示させたい内容 |
使用するコマンド |
---|---|
ファイルタイプ、最新のリビジョン番号、その他の情報を含むファイルの状態。 |
p4 files |
最新のものから最も古いものにいたるまでのファイルリビジョン |
p4 filelog |
現在作業状態のファイル |
p4 opened |
p4 sync結果のプレビュー |
p4 sync -n |
p4 syncプレビューの要約とネットワークトラフィックの予測 |
p4 sync -N |
現在同期されているファイル |
p4 have |
指定されたファイルの内容 |
p4 print |
ファイルのディポの場所の、対応するワークスペースの場所へのマッピング |
p4 where |
ファイルの一覧およびファイルに関する詳細情報 |
p4 fstat |
ファイルの状態を表示する
ファイルの1つのリビジョンに関する情報を表示するには、p4 filesコマンドを発行します。このコマンドは、ディポ内でのファイルの場所、指定リビジョンでそれらのファイルに行われた動作(add
、edit
、delete
など)、指定ファイルリビジョンがサブミットされたチェンジリスト、およびそのファイルタイプを表示します。次の例は、p4
filesコマンドの典型的な出力例を示します。
//depot/README#5 - edit change 6 (text)
p4 filesコマンドには1つ以上のfilespec
引数が必要です。ローカルシンタックス、クライアントシンタックス、ディポシンタックスのうち、どれを使用するかに関係なく、p4 fileコマンドはディポシンタックスを使用して結果を表示します。リビジョン番号を指定しない場合、最新リビジョンの情報が表示されます。p4 filesの出力には削除されたリビジョンも含まれます。
次の表に、p4 filesコマンドの一般的な使用方法をいくつか示します。
表示させたい状態 |
使用するコマンド |
---|---|
クライアントワークスペースビューに関係なく、ディポ内のすべてのファイル。
非常に多くのファイルを含むディポの場合、必要がない限りディポ全体( |
p4 files //depot/... |
指定されたクライアントワークスペースに現在同期されているファイル |
p4 files
@ |
自分のクライアントワークスペースビューによってマッピングされているファイル |
p4 files
// |
現在作業中のディレクトリにある特定のファイル |
p4 files |
特定のファイルリビジョン |
p4 files
|
ファイルがそのチェンジリストでサブミットされたかどうかにかかわらず、チェンジリストがサブミットされた時点での特定のファイル |
p4 files
|
特定のラベルでタグ付けされているファイル |
p4 files
|
ファイルのリビジョン履歴を表示する
ファイルのリビジョン履歴を表示するには、p4 filelog
filespec
コマンドを発行します。以下の例に、p4 filelogによりどのようにリビジョン履歴が表示されるかを示します。
p4 filelog //depot/dev/main/jam/jam.c //depot/dev/main/jam/jam.c ... #35 change 627 edit on 2011/11/13 by earl@earl-dev-yew (text) 'Handle platform variants better' ... #34 change 598 edit on 2011/10/24 by raj@raj-althea (text) 'Reverse previous attempt at fix' ... ... branch into //depot/release/jam/2.2/src/jam.c#1 ... #33 change 581 edit on 2011/10/03 by gale@gale-jam-oak (text) 'Version strings & release notes'
各チェンジリストの説明をすべて表示するには、-l
オプションを指定します。
作業状態のファイルを一覧表示する
クライアントワークスペースで現在作業状態であるファイルを一覧表示するには、p4 opened filespec
コマンドを発行します。次の行は、p4 openedコマンドによる表示される出力の例です。
//depot/dev/main/jam/fileos2.c- edit default change (text)
次の表に、p4 openedコマンドの一般的な使用方法をいくつか示します。
一覧表示する内容 |
使用するコマンド |
---|---|
現在のワークスペースで作業状態となっているファイル |
p4 opened |
すべてのクライアントワークスペースで作業状態となっているファイル |
p4 opened -asp4 opened -a |
番号付きの作業中チェンジリストにあるファイル |
p4 opened -c changelist |
デフォルトのチェンジリストにあるファイル |
p4 opened -c default |
特定のファイルが自分のワークスペースで作業状態になっているかどうか |
p4 opened filespec |
特定のファイルが作業状態になっているかどうか |
p4 opened -a filespec |
ファイルの場所を表示する
ファイルの場所に関する情報を表示するには、p4 where、p4 have、p4 sync -nの各コマンドを使用します。
-
ディポシンタックス、クライアントシンタックス、ローカルシンタックスでファイルの場所を表示するには、p4 whereコマンドを発行します。
-
自分のクライアントワークスペースに最後に同期させたファイルの場所およびリビジョンのリストを表示するには、p4 haveコマンドを発行します。
-
ファイルが自分のワークスペース内のどこに同期されたかを調べるには、p4 sync -nコマンドを発行して同期結果をプレビューします。
上記のコマンドでは、filespec
を付けても付けなくても使用することができます。
次の表に、ファイルの場所を知るための有用なコマンドをいくつか示します。
表示内容 |
使用するコマンド |
---|---|
自分のワークスペースに同期させているファイルのリビジョン番号 |
p4 have |
ディポ内にある特定のファイルが自分のワークスペースのどこにマッピングされているか |
p4 where
//depot/ |
ファイルの内容を表示する
ディポ内のファイルの内容を表示するには、p4
print filespec
を発行します。このコマンドは、ファイルを説明する1行のヘッダとともに、ファイルの内容を標準出力または指定出力ファイルに出力します。-q
オプションを指定すれば、ヘッダは出力されません。デフォルトでは、最新リビジョンが表示されますが、ファイルリビジョンを指定することもできます。
表示させたいファイル内容 |
使用するコマンド |
---|---|
最新リビジョン |
p4 print |
ヘッダを含まないファイル内容 |
p4 print -q
|
特定のチェンジリスト番号のファイル |
p4 print
|
注釈(ファイル内容への変更の詳細情報)を表示する
テキストファイルのどの行をどのファイルリビジョンまたはチェンジリストで変更したかを調べるには、p4 annotateコマンドを発行します。
デフォルトでは、p4 annotateはファイルの各行を表示し、変更したリビジョンがわかるように、各行の先頭にリビジョン番号が付加されます。リビジョン番号ではなくチェンジリスト番号を表示するには、-c
オプションを指定します。
Example 47. p4 annotateを使用して、ファイルへの変更を表示します。
ディポにファイル(file.txt#1
)が追加され、ファイルには以下の行が含まれています。
This is a text file. The second line has not been changed. The third line has not been changed.
3行目が削除され、2行目が編集されて、file.txt#2
は次のようになります。
This is a text file. The second line is new.
p4 annotateおよびp4 annotate -cの出力は次のようになります。
$ p4 annotate file.txt //depot/files/file.txt#3 - edit change 153 (text) 1: This is a text file. 2: The second line is new. $ p4 annotate -c file.txt //depot/files/file.txt#3 - edit change 153 (text) 151: This is a text file. 152: The second line is new.
file.txt
の最初の行はリビジョン1から存在し、このリビジョンはチェンジリスト151でサブミットされています。2行目はリビジョン2から存在し、そのリビジョンはチェンジリスト152でサブミットされています。
このファイルのすべての行を(削除された行を含め)表示するには、次のようにp4 annotate -aを実行します。
$ p4 annotate -a file.txt //depot/files/file.txt#3 - edit change 12345 (text) 1-3: This is a text file. 1-1: The second line has not been changed. 1-1: The third line has not been changed. 2-3: The second line is new.
出力の最初の行は、ファイルの1行目がリビジョン1から3まで存在していることを示しています。次の2行は、file.txt
のこれらの行がリビジョン1にのみ存在したことを示しています。最後の行は、リビジョン2で追加された行がリビジョン3にも存在していることを示しています。
-a
オプションと-c
オプションを組み合わせると、これまでこのファイルに存在したすべての行と、各行が存在したチェンジリスト番号(リビジョン番号ではない)を表示することができます。
ファイルへの変更を監視する
ファイルへの変更を発生の都度追跡するために、Perforceのチェンジレビューデーモンを使用できます。これにより、Perforceユーザが目的のファイルやディレクトリを指定したり、特定のファイルを変更するチェンジリストがサブミットされたときにメールを受信したりすることができます。レビューデーモンの管理に関する詳細については、『Perforceサーバ管理者ガイド: 基本』および『P4コマンドリファレンス』のp4 reviewコマンドの説明を参照してください。
次の表に、ファイル、チェンジリスト、およびユーザの状態に関する情報を表示するコマンドを示します。これらのコマンドはレビューデーモンでよく使用されます。
一覧表示する内容 |
使用するコマンド |
---|---|
特定のファイルを閲覧するユーザ |
p4 reviews
|
特定のチェンジリスト内のファイルを閲覧するユーザ |
p4 reviews -c
|
特定のユーザの電子メールアドレス |
p4 users
|
チェンジリストのレポート
p4 changesコマンドは特定の検索基準に合うチェンジリストを一覧表示し、p4 describeコマンドは特定のチェンジリストに関連付けられているファイルやジョブを一覧表示します。これらのコマンドについて解説します。
チェンジリストを一覧表示する
チェンジリストを一覧表示するには、p4 changesコマンドを発行します。デフォルトでは、p4 changesはシステムが認識しているpublicタイプのチェンジリストと当該ユーザがアクセス権限を持つrestrictedタイプのチェンジリストについてそれぞれ1行ずつ表示します。以下の表に、リストのフィルタリングに使用できるコマンドラインオプションを示します。
一覧表示させたいチェンジリスト |
使用するコマンド |
---|---|
チェンジリストの記述の最初の31文字を表示 |
p4 changes |
チェンジリストの完全な記述を表示 |
p4 changes -l |
最後の |
p4 changes -m |
特定の状態のチェンジリスト |
|
特定のユーザに関連するチェンジリスト |
p4 changes -u |
特定のワークスペースに関連するチェンジリスト |
p4 changes -c
|
特定のファイルに関連するチェンジリスト |
p4 changes
|
特定のファイルに関連するチェンジリスト(名前を付けたファイルと後になって統合されたファイルに関連するチェンジリストも含む) |
p4 changes -i
|
特定のファイルに関連するチェンジリスト(これらのファイルのリビジョン |
p4 changes
|
ラベル |
p4 changes
|
2つの日付の間にサブミットされたチェンジリスト |
p4 changes
@ |
特定の日以降にサブミットされたチェンジリスト |
p4 changes
@ |
チェンジリストに関連するファイルとジョブを一覧表示する
特定のチェンジリストに関連するファイルとジョブの一覧を、変更の差分とともに表示するには、p4 describeコマンドを発行します。差分を省略する(短い形式の出力)には、-s
オプションを指定します。次の表に、チェンジリストのレポートに使われる有用なコマンドをいくつか示します。
一覧表示する内容 |
使用するコマンド |
---|---|
作業中チェンジリストに含まれるファイル |
p4 opened -c
|
特定のチェンジリストでサブミットされたファイル、および修正されたジョブ。差分を含む。 |
p4 describe
|
特定のチェンジリストでサブミットされたファイル、および修正されたジョブ。差分は表示しない。 |
p4 describe -s
|
特定のチェンジリストに関連するファイルおよびジョブ。コンテキスト差分オプションを基盤となる比較プログラムに渡す。 |
p4 describe -dc
|
特定のチェンジリストにおける特定ファイルの状態を、そのチェンジリストがこれらのファイルに関連するかどうかにかかわらず表示。 |
p4 files
|
ジョブについてレポートするその他のコマンドに関しては、ジョブのレポートを参照してください。
ラベルのレポート
ラベルに関する情報を表示するには、p4 labelsコマンドを発行します。次の表に、ラベルのレポートに使われる有用なコマンドをいくつか示します。
一覧表示する内容 |
使用するコマンド |
---|---|
すべてのラベルとその作成日付および所有者 |
p4 labels |
指定したファイルリビジョン(またはリビジョン範囲)を含むすべてのラベル |
p4 labels file#
|
特定のラベルでタグ付けされているファイル |
p4 files
@ |
ラベルを同期させた結果のプレビュー |
p4 sync -n
@ |
ブランチと反映のレポート
以下の表に、ブランチおよび反映操作に関するレポートに一般的に使用されるコマンドを示します。
一覧表示する内容 |
使用するコマンド |
---|---|
すべてのブランチ仕様 |
p4 branches |
特定のブランチ内のファイル |
p4 files |
特定ファイルのリビジョン |
p4 filelog
|
特定ファイルのリビジョン。ブランチ元となったファイルのリビジョンを再帰的に含む。 |
p4 filelog -i
|
衝突解決の結果のプレビュー表示 |
p4 resolve [ |
衝突は解決されたが、まだサブミットされていないファイル |
p4 resolved
[ |
反映およびサブミットされているファイルのうち、 |
p4 integrated
|
反映操作の結果のプレビュー表示 |
p4 integrate [ |
ジョブのレポート
ジョブを一覧表示する
ジョブを一覧表示するには、p4 jobsコマンドを発行します。以下の表に、ジョブのレポートに一般的に使用されるコマンドを示します。
一覧表示する内容 |
使用するコマンド |
---|---|
すべてのジョブ |
p4 jobs |
完全な説明を含むすべてのジョブ |
p4 jobs -l |
検索基準に合致するジョブ(詳しくは、「ジョブを検索する」を参照) |
p4 jobs -e
|
特定のファイルを含むチェンジリストで修正されたジョブ |
p4 jobs |
特定のファイルを含むチェンジリストで修正されたジョブ。その特定のファイルに後で統合されたファイルが含まれるチェンジリストを含める。 |
p4 jobs -i |
チェンジリストにより修正されたジョブを一覧表示する
p4
change、p4 submit、またはp4
fixでチェンジリストにリンクされたジョブは、「修正されたジョブ」(それらの状態がclosed
であるかどうかにかかわらず)と呼ばれます。チェンジリストにより修正されたジョブを一覧表示するには、p4
fixesコマンドを発行します。
以下の表に、修正のレポートに使われる有用なコマンドを示します。
一覧表示する内容 |
使用するコマンド |
---|---|
ジョブにリンクされているすべてのチェンジリスト |
p4 fixes |
特定のジョブにリンクされているすべてのチェンジリスト |
p4 fixes -j |
特定のチェンジリストにリンクされているすべてのジョブ |
p4 fixes -c
|
特定のファイルに関連するすべての修正 |
p4 fixes |
特定のファイルに関連するすべての修正。その特定のファイルに後で統合されたファイルが含まれるチェンジリストを含める。 |
p4 fixes -i
|
システム構成のレポート
このセクションで説明するコマンドでは、Perforceユーザ、クライアントワークスペース、およびディポが表示されます。
ユーザを表示する
p4 users commandは、ユーザ名、電子メールアドレス、ユーザの本名、およびユーザが最後にPerforceにアクセスした日付を、以下の形式で表示します。
bruno <bruno@bruno_ws> (bruno) accessed 2011/03/07 dai <dai@dai_ws> (Dai Sato) accessed 2011/03/04 earl <earl@earl_ws> (Earl Ashby) accessed 2011/03/07 gale <gale@gale_ws> (Gale Beal) accessed 2011/06/03 hera <hera@hera_ws> (Hera Otis) accessed 2011/10/03 ines <ines@ines_ws> (Ines Rios) accessed 2011/02/02 jack <jack@submariner> (jack) accessed 2011/03/02 mei <mei@mei_ws> (Mei Chang) accessed 2011/11/14 ona <ona@ona_ws> (Ona Birch) accessed 2011/10/23 quinn <quinn@quinn_ws> (Quinn Cass) accessed 2011/01/27 raj <raj@ran_ws> (Raj Bai) accessed 2011/07/28 vera <vera@vera_ws> (Vera Cullen) accessed 2011/01/15
ワークスペースを表示する
クライアントワークスペースの情報を表示するには、p4 clientsコマンドを発行します。このコマンドは、クライアントワークスペース名、ワークスペースの最終更新日付、ワークスペースルート、およびワークスペースの説明を以下の形式で表示します。
Client bruno_ws 2011/03/07 root c:\bruno_ws '' Client earl-dev-beech 2011/10/26 root /home/earl '' Client earl-dev-guava 2011/09/08 root /usr/earl/development '' Client earl-dev-yew 2011/11/19 root /tmp '' Client earl-win-buckeye 2011/03/21 root c:\src '' Client earl-qnx-elm 2011/01/17 root /src '' Client earl-tupelo 2011/01/05 root /usr/earl ''
ディポを一覧表示する
ディポを一覧表示するには、p4 depotsコマンドを発行します。このコマンドによる表示項目は、ディポ名、ディポの作成日、ディポのタイプ(local
、remote
、archive
、spec
またはstream
)、ディポのホスト名またはIPアドレス(remote
の場合)、ローカルディポへのマッピング、およびディポに関するシステム管理者のコメントです。
単一Perforceインストールで複数のディポを定義する方法について詳しくは、『Perforceサーバ管理者ガイド: 基本』を参照してください。
サンプルスクリプト
以下のサンプルスクリプトでは、p4 fstatコマンドの出力を解析し、最新リビジョンがクライアントワークスペースにないときに作業状態にされているファイル(問題発生の可能性あり)をレポートします。
Example 48. p4 fstatコマンドの出力の解析結果を示すサンプルシェルスクリプト
#!/bin/sh # Usage: opened-not-head.sh files # Displays files that are open when the head revision is not # on the client workspace echo=echo exit=exit p4=p4 sed=sed if [ $# -ne 1 ] then $echo "Usage: $0 files" $exit 1 fi $p4 fstat -Ro $1 | while read line do name=`$echo $line | $sed 's/^[\. ]\+\([^ ]\+\) .*$/\1/'` value=`$echo $line | $sed 's/^[\. ]\+[^ ]\+ \(.*\)$/\1/'` if [ "$name" = "depotFile" ] then depotFile=$value elif [ "$name" = "headRev" ] then headRev=$value elif [ "$name" = "haveRev" ] then haveRev=$value if [ $headRev != $haveRev ] then $echo $depotFile fi fi done