In TortoiseSVN 1.6 a new interface was added which provides more functionality for plugins (also available in TortoiseGit since 1.2.1). This IBugTraqProvider2 interface inherits from 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 );
This method is called from the TortoiseGit commit dialog when the user clicks on the plugin button. This method is called instead of
GetCommitMessage(). Please refer to the documentation for
GetCommitMessage for the parameters that are also used there.
commonURL is the parent URL of all items selected to bring up the commit dialog. This is basically the URL of the
bugID contains the content of the bug-ID field (if it is shown, configured with the property
The return parameter
bugIDOut is used to fill the bug-ID field when the method returns.
revPropValues are only honored by TortoiseSVN and are ignored by TortoiseGit. If no revision properties are to be set, the plugin must return empty arrays.
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 );
This method is called right before the commit dialog is closed and the commit begins. A plugin can use this method to validate the selected files/folders for the commit and/or the commit message entered by the user. The parameters are the same as for
GetCommitMessage2(), with the difference that
commonURL is now the common URL of all checked items, and
commonRoot the root path of all checked items.
For the branch/tag dialog, the
commonURL is the source URL of the copy, and
commonRoot is set to the target URL of the copy.
The return parameter
errorMessage must either contain an error message which TortoiseGit shows to the user or be empty for the commit to start. If an error message is returned, TortoiseGit shows the error string in a dialog and keeps the commit dialog open so the user can correct whatever is wrong. A plugin should therefore return an error string which informs the user what is wrong and how to correct it.
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 );
This method is called after a successful commit. A plugin can use this method to e.g., close the selected issue or add information about the commit to the issue. The parameters are the same as for
HRESULT HasOptions( // Whether the provider provides options [out, retval] VARIANT_BOOL *ret );
This method is called from the settings dialog where the user can configure the plugins. If a plugin provides its own configuration dialog with
ShowOptionsDialog, it must return TRUE here, otherwise it must return 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 );
This method is called from the settings dialog when the user clicks on the "Options" button that is shown if
HasOptions returns TRUE. A plugin can show an options dialog to make it easier for the user to configure the plugin.
parameters string contains the plugin parameters string that is already set/entered.
newparameters return parameter must contain the parameters string which the plugin constructed from the info it gathered in its options dialog. That
paramameters string is passed to all other IBugTraqProvider and IBugTraqProvider2 methods.