欠陥追跡

ジョブとは、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.

以下の表は、デフォルトのジョブ仕様にあるフィールド詳しく説明しています。

フィールド名

解説

デフォルト

Job

ジョブの名前(空白は使用不可)。デフォルトでは、Perforceは番号を付ける方式を使用してジョブ名を割り当てます(jobnnnnnn)。

最新のジョブ番号 + 1

Status

  • open: 修正が済んでいないジョブ。

  • closed: 完了済みのジョブ。

  • suspended: 現在作業が保留されているジョブ。

open

User

ジョブが割り当てられているユーザ。通常、この問題の修正を割り当てられている担当者です。

ジョブ作成者のPerforceユーザ名

Date

ジョブが最後に変更された日付。

ジョブを保存する際にPerforceによって更新されます。

Description

要求されている作業の説明。例えば、バグの説明や改善の要求であったりします。

なし。説明の記述は必須。

既存のジョブを編集するには、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. 特定の単語を含むジョブを検索する

ブルーノは、filterfilemailboxという語を含むすべてのジョブを検索したいと考え、次のように入力します。

p4 jobs -e 'filter file mailbox'

Example 41. いずれかのフィールドに一連の単語のうちのいずれかを含むジョブを検索する

ブルーノは、filterfilemailboxという単語のどれかを含むジョブを検索したいと考え、次のように入力します。

p4 jobs -e 'filter|file|mailbox'

ワイルドカード「*」を使用して、1つ以上の文字と照合することができます。例えば、fieldname=string*という式には、stringstringsstringbufferなどが適合します。

ワイルドカードを含む単語を検索するには、コマンドにおいてワイルドカード文字の前にバックスラッシュを挿入します。例えば、*string(おそらくchar *stringを参照)を検索するには、次のコマンドを発行します。

p4 jobs -e '\*string'

特定のフィールドを検索する

特定のフィールドの値に基づいて検索を行うには、field=valueを指定します。

Example 42. 特定のフィールドに単語を含むジョブを検索する

ブルーノは、フィルタリングに関連する作業中のジョブを検索したいと考え、次のように入力します。

p4 jobs -e 'Status=open User=bruno filter.c'

このコマンドは、Status:フィールドがopenUser:フィールドが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を示す^です。

これらの演算子の動作は、式中のフィールドのタイプによって異なります。以下の表は、フィールドタイプおよびそれぞれのフィールドタイプが検索されるかを示したものです。

フィールドタイプ

解説

注記

word

1つの単語

等価演算子(=)には、指定フィールドの値が、指定した単語に完全に一致するジョブが適合します。

関係演算子はASCIIの順番で比較を実行します。

text

フィールド名の下の行に入力された、ひとまとまりのテキスト

等価演算子(=)には、指定フィールドに指定された値が含まれているジョブが適合します。

フィールドタイプにおける関係演算子の使用は、限定的なものです。指定したフィールドの単語のうち、1つでも指定した値と一致すれば、そのジョブが適合することになるからです。例えば、gui bugという語句のみを含むShortDescription:というテキストフィールドを持つジョブがあり、その式が'ShortDesc<filter'である場合、bug<filterなので、このジョブはその式に適合します。

line

フィールド名と同一の行に入力された1行のテキスト

textと同じ

select

1組の値セットのうち1つ。例えば、ジョブの状態はopen/suspended/closedのいずれかになります。

等価演算子(=)には、フィールドの値が特定の単語であるジョブが適合します。関係演算子は、ASCIIの順番で比較を実行します。

date

日付および任意指定の時刻。例えば、2011/07/15:13:21:40

日付は時系列で適合します。特定の時刻を指定していない場合、演算子=<=>=によって、その日の時刻すべてが適合します。

bulk

textと類似していますが、検索用インデックスは付けられていません。

これらのフィールドは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に変わります。