手册

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 中具有相应的 value。如果不需要设置修订属性,插件必须返回空数组。

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 是所有选中项目的根路径。

对于分支/标签对话框,commonURL 是复制的源 URL,commonRoot 设置为复制的目标 URL。

返回值参数 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 方法。

TortoiseSVN 主页