IBugtraqProvider 接口

TortoiseSVN 1.5及以后的版本可以使用实现了IBugtraqProvider接口的插件。利用这些接口提供的方法,插件可以和问题追踪器互动。

  1. HRESULT ValidateParameters (
  2. // UI 的父窗体
  3. // 该UI需要在验证的过程中一直显示。
  4. [in] HWND hParentWnd,
  5.  
  6. // 需要被验证的参数字符串。
  7. [in] BSTR parameters,
  8.  
  9. // 字符串有效吗?
  10. [out, retval] VARIANT_BOOL *valid
  11. );

这个方法是被一个设置对话框调用的,在这个对话框中,用户可以添加和设置插件。parameters字符串可以被某个插件使用,用以获得附加需求的信息,例如,问题追踪器的URL、登录信息等等。该插件需要验证parameters字符串并且当验证不通过时显示错误对话框。hParentWnd参数用来指定插件显示的对话框属于哪个父窗体。当parameters字符串验证通过时,该插件必须返回一个“TRUE”。如果返回的是“FALSE”,则设置对话框将不会允许用户添加插件到工作副本目录中。

  1. HRESULT GetLinkText (
  2. // 任何需要被显示的(错误)UI的父窗体。
  3. [in] HWND hParentWnd,
  4.  
  5. // 参数字符串, 仅仅当需要和web服务器会话时使用。
  6. // 例如,去查找正确的文本是什么。
  7. [in] BSTR parameters,
  8.  
  9. // 你想显示那些字符串?
  10. // 使用当前线程区域。
  11. [out, retval] BSTR *linkText
  12. );

该插件可以提供一个可以在TortoiseSVN提交对话框的按钮(这个按钮需要调用该插件)上显示的字符串,例如,"Choose issue" 或者 "Select ticket"。请确定这个字符串不会超长,否则会在按钮中显示不下。如果这个方法返回一个错误(例如。 E_NOTIMPL),按钮上会显示一个默认的字符串。

  1. HRESULT GetCommitMessage (
  2. // 您提供者的UI的父窗体。
  3. [in] HWND hParentWnd,
  4.  
  5. // 为您的提供者准备的参数。
  6. [in] BSTR parameters,
  7. [in] BSTR commonRoot,
  8. [in] SAFEARRAY(BSTR) pathList,
  9.  
  10. // 在提交信息中已经显示过的文字。
  11. // 您的提供者应该在适当的地方包含这些文字。
  12. [in] BSTR originalMessage,
  13.  
  14. // 新的提交信息文本。
  15. // 它将替换原始的提交信息。
  16. [out, retval] BSTR *newMessage
  17. );

这是这个插件的主要方法,这个方法将在用户点击插件按钮的时候,被TortoiseSVN提交对话框调用。

parameters是一个字符串,用户在设置插件时必须将这个字符串填入设置对话框。通常,插件将通过这个字符串去寻找问题追踪器、登录信息等等。

commonRoot字符串包含所有被选择的项目(在这些项目上打开的提交对话框)的父路径。请注意: 不是 所有已被用户在提交对话框中选中的项目的根路径。对分支/表情对话框来说,这个字符串就代表将被复制的路径。

pathList参数包含一个数组(字符串类型的),数组里存放用户选中的将要提交的项目的路径。

originalMessage参数包含在提交对话框的日志信息框中登入的文本信息。如果用户还没有登入任何信息,这个字符串将为空。

newMessage返回的字符串被复制到提交对话框的日志信息编辑框中,之前显示在编辑框中的所有信息都将被覆盖。如果插件没有修改originalMessage字符串,在这里,它必须再次返回相同的字符串,否则用户填写的所有文本信息将会丢失。