欠陥追跡
ジョブとは、Perforceによって管理された番号または名前付きの作業要求です。Perforceジョブにより、バグや改善要求のステータスを追跡したり、修正および改善を実装するチェンジリストにそれらを関連付けたりすることができます。ジョブは、フィールドの内容、ジョブの入力日付または最終更新日付、およびその他多くの条件に基づいて検索することができます。
Perforce管理者は、サイトの要求にしたがってジョブ仕様をカスタマイズすることができます。ジョブ仕様の変更についての詳細情報は、『Perforceサーバ管理者ガイド: 基本』を参照してください。
Perforceを社内の欠陥トラッキングシステムと統合するか、またはサードパーティ製の欠陥トラッキングシステムとの統合を開発するには、P4DTG(Perforce Defect Tracking Gateway)を使用します。P4DTGは、グラフィカル構成エディタと複製エンジンの両方を含む統合プラットフォームです。詳細については、下記サイトを参照してください。
http://www.perforce.com/product/components/defect_tracking_gateway
ジョブを管理する
Perforceのデフォルトのジョブ命名スキームを使用してジョブを作成するには、p4
jobコマンドを発行します。新しいジョブに名前を割り当てる(または既存のジョブを編集する)には、p4 job jobname
コマンドを発行します。
Example 39. ジョブを作成する
ゲイルはJamに関する問題を発見したので、p4 jobコマンドを発行してジョブを作成し、その説明を次のように記述します。
Job: job000006 Status: open User: gale Date: 2011/11/14 17:12:21 Description: MAXLINE can't account for expanded cmd buffer size.
以下の表は、デフォルトのジョブ仕様にあるフィールド詳しく説明しています。
フィールド名 |
解説 |
デフォルト |
---|---|---|
|
ジョブの名前(空白は使用不可)。デフォルトでは、Perforceは番号を付ける方式を使用してジョブ名を割り当てます( |
最新のジョブ番号 + 1 |
|
|
|
|
ジョブが割り当てられているユーザ。通常、この問題の修正を割り当てられている担当者です。 |
ジョブ作成者のPerforceユーザ名 |
|
ジョブが最後に変更された日付。 |
ジョブを保存する際にPerforceによって更新されます。 |
|
要求されている作業の説明。例えば、バグの説明や改善の要求であったりします。 |
なし。説明の記述は必須。 |
既存のジョブを編集するには、p4 jobコマンドの発行時にp4 job jobname
の形式でジョブ名を指定します。変更内容をジョブフォームに入力し、フォームを保存して終了します。
ジョブを削除するには、p4 job -d
jobname
コマンドを発行します。
ジョブを検索する
Perforceジョブを検索するには、p4 jobs -e
jobview
コマンドを発行します。jobview
には、次のセクションで記述する検索式を指定します。詳しくは、p4 help
jobviewコマンドを発行してください。
ジョブテキストを検索する
'
式を使用して、いずれかのフィールド(日付フィールドを除く)にword1 word2 ...
wordN
'word1
からwordN
のすべてを含むジョブを検索することができます。UNIXでは一重引用符を、Windowsでは二重引用符を使用してください。
ジョブを検索するときは、次の制限事項に注意してください。
-
複数の単語を空白で区切って指定すると、Perforceは指定されたすべての単語を含むジョブを検索します。指定したいずれかの単語を含むジョブを検索するには、単語をパイプ(
|
)で区切ります。 -
式中のフィールド名およびテキスト比較では、大文字と小文字は区別されません。
-
式に表示されるのは、英数字テキストと句読点のみです。Perforceによって論理演算子として使用される文字(
=^&|()<>
)と照合するには、その前にバックスラッシュを挿入します。 -
語句を検索することはできません。単語のみ検索可能です。
Example 40. 特定の単語を含むジョブを検索する
ブルーノは、filter
、file
、mailbox
という語を含むすべてのジョブを検索したいと考え、次のように入力します。
p4 jobs -e 'filter file mailbox'
Example 41. いずれかのフィールドに一連の単語のうちのいずれかを含むジョブを検索する
ブルーノは、filter
、file
、mailbox
という単語のどれかを含むジョブを検索したいと考え、次のように入力します。
p4 jobs -e 'filter|file|mailbox'
ワイルドカード「*
」を使用して、1つ以上の文字と照合することができます。例えば、fieldname=string*
という式には、string
、strings
、stringbuffer
などが適合します。
ワイルドカードを含む単語を検索するには、コマンドにおいてワイルドカード文字の前にバックスラッシュを挿入します。例えば、*string
(おそらくchar *string
を参照)を検索するには、次のコマンドを発行します。
p4 jobs -e '\*string'
特定のフィールドを検索する
特定のフィールドの値に基づいて検索を行うには、field=value
を指定します。
Example 42. 特定のフィールドに単語を含むジョブを検索する
ブルーノは、フィルタリングに関連する作業中のジョブを検索したいと考え、次のように入力します。
p4 jobs -e 'Status=open User=bruno filter.c'
このコマンドは、Status:
フィールドがopen
、User:
フィールドがbruno
で、日付以外のフィールドにfilter.c
という単語を含むすべてのジョブを検索します。
指定された表現を含まないフィールドを検索するには、その前に否定演算子^
を挿入します。否定演算子^
は、AND式(スペースまたは&
)の直後にしか使用できません。例えば、p4 jobs -e '^user=bruno'は使用できません。このような制限を回避するには、ワイルドカード「*
」を使用して、^を挿入した単語の前に検索語を追加します。例えば、p4 jobs -e 'job=* ^user=bruno'では、ブルーノが所有していないすべてのジョブが返されます。
Example 43. フィールドに指定の値が含まれているジョブを除外する
ブルーノは、フィルタリングに関連する自分が所有者でない作業中のすべてのジョブを検索したいと考え、次のように入力します。
p4 jobs -e 'status=open ^user=bruno filter'
このコマンドにより、ブルーノが所有していない、filter
という単語を含む作業中のすべてのジョブが表示されます。
比較演算子を使用する
使用可能な比較演算子は、=
、>
、<
、>=
、<=
、およびブールのNOTを示す^
です。
これらの演算子の動作は、式中のフィールドのタイプによって異なります。以下の表は、フィールドタイプおよびそれぞれのフィールドタイプが検索されるかを示したものです。
フィールドタイプ |
解説 |
注記 |
---|---|---|
|
1つの単語 |
等価演算子( 関係演算子はASCIIの順番で比較を実行します。 |
|
フィールド名の下の行に入力された、ひとまとまりのテキスト |
等価演算子( フィールドタイプにおける関係演算子の使用は、限定的なものです。指定したフィールドの単語のうち、1つでも指定した値と一致すれば、そのジョブが適合することになるからです。例えば、 |
|
フィールド名と同一の行に入力された1行のテキスト |
|
|
1組の値セットのうち1つ。例えば、ジョブの状態は |
等価演算子( |
|
日付および任意指定の時刻。例えば、 |
日付は時系列で適合します。特定の時刻を指定していない場合、演算子 |
bulk |
|
これらのフィールドはp4 jobs -eを使用して検索できません。 |
フィールドタイプが分からない場合、p4 jobspec -o
commandコマンドを発行するとジョブ仕様が表示されます。Fields:
フィールドには、ジョブフィールドの名前とデータタイプがリスト表示されます。
日付フィールドを検索する
日付フィールドを検索するには、yyyy/mm/dd
またはyyyy/mm/dd:hh:mm:ss
形式を使用して日付を指定します。時刻を指定しない場合、等価演算子(=
)には、その日のすべての時刻が適合します。
Example 44. 式の中で日付を使用する
ブルーノは、2011年7月13日に変更したすべてのジョブを参照したいと考え、次のように入力します。
p4 jobs -e 'ModifiedDate=2011/07/13'
ジョブを修正する
ジョブを修正するには、そのジョブをチェンジリストにリンクして、チェンジリストをサブミットします。チェンジリストがサブミットされると、Perforceは自動的にジョブのステータスフィールドの値をclosed
に変更します。
ジョブをチェンジリストにリンクするには、次の3つの方法があります。
-
p4 userフォームの
JobView:
フィールドを、ジョブに適合する式に設定します。 -
p4 fixコマンドを使用します。
-
p4 submitフォームを編集します。
ジョブを編集することにより直接ジョブステータスを変更できますが、手動でジョブを終了すると、ジョブを修正したチェンジリストとの関連付けが失われます。Status:
フィールドを削除してサイトのジョブ仕様を変更した場合、ジョブをチェンジリストにリンクすることは可能ですが、チェンジリストがサブミットされていると、ステータスを変更することはできません。(ほとんどの場合、これは期待される処理方法ではありません。)詳しくは、『Perforceサーバ管理者ガイド: 基本』のジョブ仕様の編集に関する章を参照してください。
チェンジリストからジョブを削除するには、p4 fix -dコマンドを発行します。
自動的にリンクする
Perforceユーザ仕様を変更すると、作成した任意のチェンジリストに作業中のジョブを組み込むことができます。自動組み込みを設定するには、p4
userコマンドを発行して、JobView:
フィールドの値を、組み込むジョブを特定する有効な式に設定します。
Example 45. 自動的にジョブをチェンジリストにリンクする
ブルーノは、自分が作成したすべてのチェンジリスト内で自分が所有する作業中のすべてのジョブを参照したいと考え、p4 userと入力し、JobView:
フィールドに次のように追加します。
User: bruno Update: 2011/06/02 13:11:57 Access: 2011/06/03 20:11:07 JobView: user=bruno&status=open
これで、ブルーノが所有している作業中のすべてのジョブが自動的にデフォルトのチェンジリストに組み込まれました。チェンジリストをサブミットする際、ブルーノはサブミットするチェンジリストによって修正されていないジョブを確実に削除する必要があります。
手動でリンクする
ジョブを手動でチェンジリストにリンクするには、p4 fix -c
changenum jobname
コマンドを発行します。このチェンジリストがすでにサブミットされている場合、ジョブのStatus:
フィールドの値がclosed
に変わります。それ以外の場合は、ジョブのステータスは変わりません。
Example 46. 手動でジョブをチェンジリストにリンクする
p4 fixを使用して、別のユーザが所有するジョブにチェンジリストをリンクすることができます。
サラは、options-bug
というジョブをブルーノにサブミットしましたが、そのバグは既に、ブルーノが以前にサブミットしたチェンジリスト18で修正されていました。ブルーノは、次のように入力してチェンジリストにそのジョブをリンクします。
p4 fix -c 18 options-bug
チェンジリスト18は既にサブミット済みであるため、ジョブの状態はclosed
に変わります。
ジョブをチェンジリストにリンクする
チェンジリストをサブミットまたは編集する際にチェンジリストにジョブをリンクするには、チェンジリスト仕様のJobs:
フィールドにジョブ名を入力します。チェンジリストをサブミットすると、ジョブ(デフォルトでは)はクローズされます。
作業中チェンジリストへのジョブのリンクを解除するには、チェンジリストを編集して、Jobs:
フィールドからジョブの名前を削除します。サブミット済みチェンジリストへのジョブのリンクを解除するには、p4 fix -d -c changenum jobname
コマンドを発行します。