La interfaz de IBugtraqProvider

TortoiseSVN 1.5 y posteriores puede usar extensiones que implementan la interface IBugtraqPorvider. La interface provee algunos métodos que las extensiones pueden usar para interactuar con la herramienta de seguimiento.

HRESULT ValidateParameters (
  // Ventana primaria para cualquier interfaz de usuario  // que se debe mostrar durante la validación.
  [in] HWND hParentWnd,

  // La cadena de caracteres que necesita ser validada.
  [in] BSTR parameters,

  // ¿Es valida la cadena de caracteres?
  [out, retval] VARIANT_BOOL *valid
);

Este método es llamado desde el diálogo de configuración en el cual el usuario puede agregar y configurar la extensión. Los parámetros "cadena de caracteres" pueden ser utilizados por la extensión para obtener información adicional requerida, ej., la URL al seguimiento de tareas, información de identificación, etc. La extensión debería verificar los parámetros "cadena de caracteres" y mostrar un diálogo de error si la cadena de caracteres no es válida. El parámetro hParentWnd debería ser utilizado para cualquier diálogo que la extensión muestre como si fuese la ventana principal. La extensión debe retornar TRUE si la validación de los parámetros "cadena de caracteres" es exitosa. Si la extensión retorna FALSE, el diálogo de configuración no le permitirá al usuario agregar la extensión a una ruta de una copia de trabajo.

HRESULT GetLinkText (
  // Ventana principal para cualquier (error) interfaz de usuario que necesite ser mostrada.
  [in] HWND hParentWnd,

  // Una cadena de caracteres, por si acaso necesitas conversar con tu
  // servicio web (ej.) para saber cual es el texto correcto.
  [in] BSTR parameters,

  // ¿Que texto deseas mostrar?
  // Use el hilo actual localmente.
  [out, retval] BSTR *linkText
);

La extensión puede proveer un string aquí que sera utilizado en el diálogo de actualización del TortoiseSVN para el botón que invoca a la extensión, ej., "Elija tema" o "Seleccione tiquet". Asegúrese que el string no sea demasiado largo, de lo contrario podría no caber en el botón. Si el método devuelve un error (ej., E_NOTIMPL), un texto por defecto será utilizado para el botón.

HRESULT GetCommitMessage (
  // Ventana principal de su interfaz proveedor.
  [in] HWND hParentWnd,

  // Parámetros para su proveedor.
  [in] BSTR parameters,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

  // El texto ya presente en el mensaje de actualización.
  // Su proveedor debería incluir este texto en el nuevo mensaje,
  // donde sea apropiado.
  [in] BSTR originalMessage,

  // El nuevo texto para el mensaje de actualización.
  // Reemplaza el mensaje original.
  [out, retval] BSTR *newMessage
);

Este es el método principal de la extensión. Este método es llamado desde el diálogo de actualización del TortoiseSVN cuando el usuario pulsa el botón de la extensión.

El string parmeters es el string que el usuario debe ingresar al diálogo de configuración al configurar la extensión. Normalmente la extensión utilizaría esto para encontrar la URL del gestor de incidencias y/o información de identificación o más.

El string RaízComún contiene la ruta padre de todos los ítems seleccionados para desplegar el diálogo de confirmación. Note que esta no es la ruta raíz de todos los items que el usuario seleccionó en el diálogo de confirmación. Para el diálogo rama/etiqueta, éste es el directiorio que ha de ser copiado.

El parámetro pathList contiene un arreglo de rutas (en strings) que el usuario ha seleccionado para confirmar.

El parámetro originalMessage contiene el texto introducido en la caja de mensaje de registro en el diálogo de confirmación. Si no se ha introducido todavía ningún texto, el string estará vacío.

El string retornado newMessage es copiado en la caja de edición del mensaje de registro en el diálogo de confirmación, remplazando lo que sea que se encuentre allí. Si alguna extensión no modifica el string originalMessage, debe retornar nuevamente el mismo string aquí, de otra manera cualquier texto introducido por el usuario se perderá.