Интерфейс IBugtraqProvider

Версии TortoiseSVN 1.5 и выше могут использовать подключаемые модули, реализующие интерфейс IBugtraqProvider. Интерфейс предоставляет несколько методов, которые модули могут использовать для взаимодействия с системой отслеживания проблем.

HRESULT ValidateParameters (
  // Родительское окно для любого пользовательского интерфейса,
  // который необходимо показывать при проверке.
  [in] HWND hParentWnd,

  // Строка параметров, которая должна быть проверена.
  [in] BSTR parameters,

  // Строка допустима?
  [out, retval] VARIANT_BOOL *valid
);

Этот метод вызывается из диалога настроек, где пользователь может добавить и настроить подключаемый модуль. Строка parameters может быть использована модулем для получения дополнительной необходимой информации, такой как URL системы отслеживания проблем, учётные данные для подключения и т.п. Модуль должен проверить строку parameters и показать окно ошибки в случае неправильной строки. Параметр hParentWnd должен быть использован как родительское окно для любого диалога, показываемого модулем. Модуль должен возвращать TRUE если проверка строки parameters прошла успешно. Если модуль возвращает FALSE, диалог настроек не позволит пользователю добавить модуль к пути в рабочей копии.

HRESULT GetLinkText (
  // Родительское окно для любого пользовательского интерфейса,
  // который необходимо показать (в основном для ошибок).
  [in] HWND hParentWnd,

  // Строка параметров, на случай если вам необходимо узнать у вашей
  // веб-службы (например), каков правильный текст.
  [in] BSTR parameters,

  // Какой текст вы желаете показать?
  // Используйте локаль текущего потока.
  [out, retval] BSTR *linkText
);

Модуль может предоставить здесь строку, которая используется в диалоге фиксации TortoiseSVN для кнопки вызова модуля, например "Выберите проблему" или "Выберите тикет". Убедитесь, что строка не очень длинная, иначе она может не поместиться на кнопку. Если метод возвращает ошибку (например, E_NOTIMPL), для кнопки используется текст по умолчанию.

HRESULT GetCommitMessage (
  // Родительское окно для пользовательского интерфейса модуля
  [in] HWND hParentWnd,

  // Параметры для вашего модуля.
  [in] BSTR parameters,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

  // Текст, уже содержащийся в сообщении фиксации.
  // Ваш модуль должен включить этот текст в новое сообщение,
  // если необходимо.
  [in] BSTR originalMessage,

  // Новый текст для сообщения фиксации.
  // Заменяет исходное сообщение.
  [out, retval] BSTR *newMessage
);

Это главный метод подключаемого модуля. Этот метод вызывается диалогом фиксации TortoiseSVN, когда пользователь нажимает на кнопку модуля.

Строка parameters - это строка, которую пользователь должен ввести в диалоге настроек, когда он конфигурирует подключаемый модуль. Обычно модуль использует её для поиска URL адреса системы отслеживания ошибок и/или информации для подключения и проч.

Строка commonRoot содержит родительский путь всех элеметов, выбранных для показа в диалоге фиксации. Обратите внимание, что это непуть всех элементов, которые выбрал пользователь в диалоге фиксации. Для диалогов ответвлений/меток этот путь должен быть скопирован.

Параметр pathList содержит массив путей (в виде строк), которые пользователь выбрал для фиксации.

Параметр originalMessage содержит текст, введенный в окно сообщений журнала в диалоге фиксации. Если пользователь еще не ввёл никакого текста, эта строка будет пустой.

Параметр newMessage возвращает строку, скопированную в поле ввода сообщения журнала в диалоге фиксации поверх существовавщей там записи. Если подключаемый модуль не изменяет строку originalMessage, он должен возвращать ту же строку, иначе любой введенный пользователем текст будет потерян.