TortoiseSVN 1.5及以后的版本可以使用实现了IBugtraqProvider接口的插件。利用这些接口提供的方法,插件可以和问题追踪器互动。
HRESULT ValidateParameters ( // UI 的父窗体 // 该UI需要在验证的过程中一直显示。 [in] HWND hParentWnd, // 需要被验证的参数字符串。 [in] BSTR parameters, // 字符串有效吗? [out, retval] VARIANT_BOOL *valid );
这个方法是被一个设置对话框调用的,在这个对话框中,用户可以添加和设置插件。parameters
字符串可以被某个插件使用,用以获得附加需求的信息,例如,问题追踪器的URL、登录信息等等。该插件需要验证parameters
字符串并且当验证不通过时显示错误对话框。hParentWnd
参数用来指定插件显示的对话框属于哪个父窗体。当parameters
字符串验证通过时,该插件必须返回一个“TRUE”。如果返回的是“FALSE”,则设置对话框将不会允许用户添加插件到工作副本目录中。
HRESULT GetLinkText ( // 任何需要被显示的(错误)UI的父窗体。 [in] HWND hParentWnd, // 参数字符串, 仅仅当需要和web服务器会话时使用。 // 例如,去查找正确的文本是什么。 [in] BSTR parameters, // 你想显示那些字符串? // 使用当前线程区域。 [out, retval] BSTR *linkText );
该插件可以提供一个可以在TortoiseSVN提交对话框的按钮(这个按钮需要调用该插件)上显示的字符串,例如,"Choose issue" 或者 "Select ticket"。请确定这个字符串不会超长,否则会在按钮中显示不下。如果这个方法返回一个错误(例如。 E_NOTIMPL
),按钮上会显示一个默认的字符串。
HRESULT GetCommitMessage ( // 您提供者的UI的父窗体。 [in] HWND hParentWnd, // 为您的提供者准备的参数。 [in] BSTR parameters, [in] BSTR commonRoot, [in] SAFEARRAY(BSTR) pathList, // 在提交信息中已经显示过的文字。 // 您的提供者应该在适当的地方包含这些文字。 [in] BSTR originalMessage, // 新的提交信息文本。 // 它将替换原始的提交信息。 [out, retval] BSTR *newMessage );
这是这个插件的主要方法,这个方法将在用户点击插件按钮的时候,被TortoiseSVN提交对话框调用。
parameters
是一个字符串,用户在设置插件时必须将这个字符串填入设置对话框。通常,插件将通过这个字符串去寻找问题追踪器、登录信息等等。
commonRoot
字符串包含所有被选择的项目(在这些项目上打开的提交对话框)的父路径。请注意: 不是 所有已被用户在提交对话框中选中的项目的根路径。对分支/表情对话框来说,这个字符串就代表将被复制的路径。
pathList
参数包含一个数组(字符串类型的),数组里存放用户选中的将要提交的项目的路径。
originalMessage
参数包含在提交对话框的日志信息框中登入的文本信息。如果用户还没有登入任何信息,这个字符串将为空。
newMessage
返回的字符串被复制到提交对话框的日志信息编辑框中,之前显示在编辑框中的所有信息都将被覆盖。如果插件没有修改originalMessage
字符串,在这里,它必须再次返回相同的字符串,否则用户填写的所有文本信息将会丢失。