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
字符串,它必须在此处返回相同的字符串,否则用户输入的任何文本都会丢失。