手册

IBugtraqProvider 接口

TortoiseSVN 1.5 及更高版本可以使用实现 IBugtraqProvider 接口的插件。该接口提供了一些方法,插件可以使用这些方法与问题跟踪器进行交互。

HRESULT ValidateParameters (
  // Parent window for any UI that needs to be
  // displayed during validation.
  [in] HWND hParentWnd,

  // The parameter string that needs to be validated.
  [in] BSTR parameters,

  // Is the string valid?
  [out, retval] VARIANT_BOOL *valid
);

此方法从设置对话框中调用,用户可以在其中添加和配置插件。插件可以使用 parameters 字符串获取其他所需信息,例如问题跟踪器的 URL、登录信息等。插件应验证 parameters 字符串,如果字符串无效,则显示错误对话框。插件应将 hParentWnd 参数用于显示为父窗口的任何对话框。如果 parameters 字符串验证成功,插件必须返回 TRUE。如果插件返回 FALSE,则设置对话框将不允许用户将插件添加到工作副本路径。

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

  // The parameter string, just in case you need to talk to your
  // web service (e.g.) to find out what the correct text is.
  [in] BSTR parameters,

  // What text do you want to display?
  // Use the current thread locale.
  [out, retval] BSTR *linkText
);

插件可以在此处提供一个字符串,该字符串在 TortoiseSVN 提交对话框中用于调用插件的按钮,例如“选择问题”或“选择票证”。确保字符串不要太长,否则可能无法放入按钮中。如果该方法返回错误(例如 E_NOTIMPL),则会使用默认文本作为按钮文本。

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

  // Parameters for your provider.
  [in] BSTR parameters,
  [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,

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

这是插件的主要方法。当用户单击插件按钮时,此方法从 TortoiseSVN 提交对话框中调用。

parameters 字符串是用户在配置插件时必须在设置对话框中输入的字符串。通常,插件会使用它来查找问题跟踪器的 URL 和/或登录信息或更多信息。

commonRoot 字符串包含用于显示提交对话框的所有选定项目的父路径。请注意,这 不是 用户在提交对话框中选择的项目的所有根路径。对于分支/标签对话框,这是要复制的路径。

pathList 参数包含用户为提交选择的路径数组(作为字符串)。

originalMessage 参数包含在提交对话框的日志消息框中输入的文本。如果用户尚未输入任何文本,则此字符串将为空。

在提交对话框中,newMessage 返回的字符串会被复制到日志消息编辑框中,替换掉原有的内容。如果插件没有修改 originalMessage 字符串,它必须在此处返回相同的字符串,否则用户输入的任何文本都会丢失。

TortoiseSVN 主页