Интерфейс IBugtraqProvider2

В TortoiseSVN 1.6 был добавлен новый интерфейс, предоставляющий расширенную функциональность для подключаемых модулей. Это интерфейс IBugtraqProvider2, наследующий от IBugtraqProvider.

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

  // Параметры для вашего модуля.
  [in] BSTR parameters,
  // Общий URL фиксации
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

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

  // Содержимое поля bugID (если показано)
  [in] BSTR bugID,

  // Изменённое содержимое поля bugID
  [out] BSTR * bugIDOut,

  // Вы можете назначать собственные свойства ревизии для фиксации
  // путём установки следующих двух параметров.
  // Внимание: Оба массива должны быть одного размера.
  // Для каждого имени свойства должно иметься значение!

  // Список имён свойств ревизии.
  [out] SAFEARRAY(BSTR) * revPropNames,

  // Список значений свойств ревизии.
  [out] SAFEARRAY(BSTR) * revPropValues,

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

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

Параметр commonURL - это родительский URL для всех элементов, выбранных для показа в диалоге фиксации. Это по существу URL адрес commonRoot.

В параметре bugID находится содержимое поля идентификатора ошибки bug-ID (при отображении параметр настраивается свойством bugtraq:message).

Значение параметра bugIDOut используется для заполнения поля идентификатора ошибки bug-ID, когда метод завершает работу.

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

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 (
  // Родительское окно для любого пользовательского интерфейса,
  // который необходимо показать (в основном для ошибок).
  [in] HWND hParentWnd,

  // Общий корень всех фиксируемых путей.
  [in] BSTR commonRoot,

  // Все фиксируемые пути.
  [in] SAFEARRAY(BSTR) pathList,


  // Текст, уже содержащийся в сообщении фиксации.
  [in] BSTR logMessage,

  // Ревизия фиксации.
  [in] ULONG revision,


  // Ошибка, которую необходимо показать пользователю,
  // если эта функция возвращает что-то, отличное от S_OK
  [out, retval] BSTR * error
);

Этот метод вызывается после успешной фиксации. Модуль может использовать этот метод, например, для закрытия выбранной проблемы или для добавления информации о фиксации к проблеме. Параметры те же, что и для GetCommitMessage2.

HRESULT HasOptions(
  // Предоставляет ли модуль возможности по настройке?
  [out, retval] VARIANT_BOOL *ret
);

Этот метод вызывается из диалога настроек, в котором пользователь может настраивать подключаемые модули. Если модуль предоставляет свой собственный диалог параметров посредством ShowOptionsDialog, он должен вернуть здесь TRUE, иначе он должен возвращать FALSE.

HRESULT ShowOptionsDialog(
  // Родительское окно для диалога настроек
  [in] HWND hParentWnd,

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

  // Строка параметров
  [out, retval] BSTR * newparameters
);

Этот метод вызывается из диалога настроек, когда пользователь нажимает на кнопку "Options". Она отображается, если HasOptions возвращиетTRUE. Подключаемый модуль может отображать диалог настроек для упрощения настройки модуля пользователем.

Строка parameters содержит уже установленные/введенные строковые параметры модуля.

Возвращаемый параметр newparameters должен содержать строку параметров, которую модуль составляет на основании информации, собранной в собственном диалоге настройки параметров. Эта строка paramameters передаётся всем остальным методам IBugtraqProvider и IBugtraqProvider2.