IBugtraqProvider2 インターフェース

TortoiseSVN 1.6 では、プラグイン用により機能的な、新しいインターフェースを追加しました。この IBugtraqProvider2 インターフェースは IBugtraqProvider を継承しています。

HRESULT GetCommitMessage2 (
  // Parent window for your provider's UI.
  [in] HWND hParentWnd,

  // Parameters for your provider.
  [in] BSTR parameters,
  // The common URL of the commit
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

  // The text already present in the commit message.
  // Your provider should include this text in the new message,
  // where appropriate.
  [in] BSTR originalMessage,

  // You can assign custom revision properties to a commit
  // by setting the next two params.
  // note: Both safearrays must be of the same length.
  //       For every property name there must be a property value!

  // The content of the bugID field (if shown)
  [in] BSTR bugID,

  // Modified content of the bugID field
  [out] BSTR * bugIDOut,

  // The list of revision property names.
  [out] SAFEARRAY(BSTR) * revPropNames,

  // The list of revision property values.
  [out] SAFEARRAY(BSTR) * revPropValues,

  // The new text for the commit message.
  // This replaces the original message
  [out, retval] BSTR * newMessage
);

TortoiseSVN のコミットダイアログで、ユーザがプラグインボタンをクリックすると、このメソッドが呼ばれます。このメソッドは GetCommitMessage() の代わりに呼び出します。ここでも使用するパラメータの説明は、GetCommitMessage のドキュメントを参照してください。commonURL パラメータは、コミットダイアログを表示するために選択した、すべてのファイルの親 URL です。これは基本的に commonRoot パスの URL になります。bugID パラメータは bug-ID フィールド (表示する場合、bugtraq:message 属性とともに設定) の内容が格納されています。返却パラメータ bugIDOut には、メソッドが返却する際の bug-ID フィールドを入れるのに使用します。revPropNamesrevPropValues には、コミット時に設定するリビジョン属性の、名前・値の組を配列で格納しています。プラグインは、双方の配列のサイズが同じになるようにしなければなりません! revPropNames にある各属性名は、revPropValues にも、対応する値を持たねばなりません。リビジョン属性が設定されない場合、プラグインは空配列を返さなければなりません。

HRESULT CheckCommit (
  [in] HWND hParentWnd,
  [in] BSTR parameters,
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,
  [in] BSTR commitMessage,
  [out, retval] BSTR * errorMessage
);

このメソッドはコミットダイアログを閉じ、コミットが始まる前に、確実に呼ばれます。プラグインは、コミットするよう選択したファイル・フォルダやユーザが入力したログメッセージの検証に、このメソッドを利用できます。パラメータは GetCommitMessage2() と同じです。違いがあるのは、commonURL が今度は、すべてのチェックした項目の共通 URL であることと、commonRoot がすべてのチェックした項目のルートパスであることです。返却パラメータ errorMessage は、TortoiseSVN がユーザに表示するエラーメッセージか、コミットが始まるのであれば空文字列でなければなりません。エラーメッセージが返されると、TortoiseSVN はエラー文字列をダイアログに表示し、誤りを修正できるようにコミットダイアログを表示したままにします。そのためプラグインは、何が問題で、どのように修正するのかを説明するような、エラーメッセージを返すべきです。

HRESULT  OnCommitFinished (
  // Parent window for any (error) UI that needs to be displayed.
  [in] HWND hParentWnd,

  // The common root of all paths that got committed.
  [in] BSTR commonRoot,

  // All the paths that got committed.
  [in] SAFEARRAY(BSTR) pathList,


  // The text already present in the commit message.
  [in] BSTR logMessage,

  // The revision of the commit.
  [in] ULONG revision,


  // An error to show to the user if this function
  // returns something else than S_OK
  [out, retval] BSTR * error
);

このメソッドはコミット成功後に呼ばれます。プラグインは、選択した課題をクローズしたり、課題に対してコミットについての情報を追加したりするのに使用できます。パラメータは GetCommitMessage2 と同じです。

HRESULT HasOptions(
  // Whether the provider provides options
  [out, retval] VARIANT_BOOL *ret
);

このメソッドは、プラグインの設定を行う設定ダイアログから呼ばれます。プラグインが ShowOptionsDialog で独自の設定ダイアログを提供する場合、ここで必ず TRUE を返します。そうでなければ FALSE を返さなければなりません。

HRESULT ShowOptionsDialog(
  // Parent window for the options dialog
  [in] HWND hParentWnd,

  // Parameters for your provider.
  [in] BSTR parameters,

  // The parameters string
  [out, retval] BSTR * newparameters
);

このメソッドは設定ダイアログから、HasOptions が TRUE を返したときに表示される "オプション" ボタンを、ユーザがクリックしたときに呼ばれます。ユーザがプラグインの設定を簡単に行えるように、オプションダイアログを表示できます。parameters 文字列は、既に設定・入力されたプラグインパラメータを格納しています。newparameters 返却パラメータは、オプションダイアログで集めた情報を、プラグインが構成したパラメータ文字列を格納しなければなりません。paramameters 文字列は、IBugtraqProvider・IBugtraqProvider2 の他のすべてのメソッドに渡されます。