La interfaz IBugtraqProvider2

En TortoiseSVN 1.6 se agrego una nueva interfaz de software que provee más funcionalidades para extensiones. Esta interfaz IBugtraqProvider2 hereda de IBugtraqProvider.

HRESULT GetCommitMessage2 (
  // Ventana padre de su proveedor de Interfaz.
  [in] HWND hParentWnd,

  // Parametros para su proveedor.
  [in] BSTR parameters,
  // La URL comun para la confirmación
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

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

  // Usted le puede asignar propiedades personalizadas a una confirmación
  // estableciendo los siguientes dos parametros.
  // nota: Ámbos arreglos deben ser del mimo largo.
¡  //      Para cada nombre de propiedad debe haber un valor de propiedad.

  // El contenido del campo bugID (si se muestra)
  [in] BSTR bugID,

  // El Contenido modificado del campo bugID.
  [out] BSTR * bugIDOut,

  // La lista de nombres de propiedades de revision.
  [out] SAFEARRAY(BSTR) * revPropNames,

  //  La lista de valores de propiedades de revision.
  [out] SAFEARRAY(BSTR) * revPropValues,

  // Texto nuevo para el mensaje de confirmación.
  // Reempaza al mensaje original.
  [out, retval] BSTR * newMessage
);

Este método es llamado desde el diálogo de confirmación de TortoiseSVN cuando el usuario presiona el boton de la extensión. Este método es llamado en lugar de GetCommitMessage(). Por favor refierase a la documentación de GetCommitMessage() para los parámetros que también se usan alli.

El parámetro commonURL es la URL padre de todos los elementos seleccionados para mostrar en el diálogo de confirmación. Esta es básicamente la URL de la ruta commonURL.

El parámetro bugID contiene el contenido del campo bug-ID (si es mostrado, configurable con la propiedad bugtraq:message).

El parámetro de retorno bugIDOut es utilizado para completar el campo bug-ID cuando el método retorna.

Los parámetros de retorno revPropNames y revPropValues pueden contener pares nombre/valor para propiedades de revisión que la confirmación debería establecer. Una extensión debe asegurarse que ámbos arreglos tengan el mismo tamaño de retorno. Cada propiedad nombre en revPropNames también tiene un valor correspondiente en revPropValues. Si no hay propiedades de revisión para establecer, la extensión debe retornar arreglos vacios.

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
);

Este método es llamado justo antes que el diálogo de confirmación se cierre y la confirmación comience. Una extensión puede utilizar este método para validar los archivos/carpetas seleccionadas para la confirmación y/o el mensaje de confirmación ingresado por el usuario. Los parámetros son los mismos que para GetCommitMessage2(), con la diferencia que commonURL es ahora la URL común de todos los elementos seleccionados, y commonRoot la ruta raíz de todo los elementos seleccionados.

Para el diálog rama/etiqueta, el commonURL es la URL fuente de la copia, y commonRoot es la URL de destino de la copia.

El parámetro de retorno errorMessage debe contener o bien un mensaje de error el cual el TortoiseSVN muestra al usuario o estar vacio para que inicie la confirmación. Si retorna un mensaje de error, TortoiseSVN muestra este string de error en un diálogo y mantiene el diálogo de confirmación abierto para que el usuario pueda corregir lo que sea que esta mal. Una extensión debería por lo tanto retornar un string de error que informe al usuario que esta mal y como corregirlo.

HRESULT  OnCommitFinished (
  // Ventana padre para cualquier (error) interfaz que necesite
  // ser mostrada.
  [in] HWND hParentWnd,

  // La raiz comun de todas las rutas que se han confirmado.
  [in] BSTR commonRoot,

  // Todas las rutas que han diso confirmadas.
  [in] SAFEARRAY(BSTR) pathList,


  // El texto ya presente en el mensaje de confirmación.
  [in] BSTR logMessage,

  // La revisión de la confirmación.
  [in] ULONG revision,


  // Un error para mostrarle al ussario si esta funsión
  // retorna otra cosa que S_OK.
  [out, retval] BSTR * error
);

Este método es llamado después de una confirmación exitosa. Una extensión puede utilizarr este método para por ejemplo, cerrar la incidencia seleccionada o agregar información sobre la confirmación a la incidencia. Los parámetros son los mismos que para GetCommitMessage2.

HRESULT HasOptions(
  // Si el proveedor provee opciones o no
  [out, retval] VARIANT_BOOL *ret
);

Este método es llamado desde el diálogo de configuración donde el usuario pude configurar la extensión. Si una extensión provee su propio diálogo de configuración con ShowOptionsDialog, debe retornar TRUE aquí, o FALSE de lo contrario.

HRESULT ShowOptionsDialog(
  // Ventana padre para el diálogo de opciones.
  [in] HWND hParentWnd,

  // Parámetros para su proveedor.
  [in] BSTR parameters,

  // Los parámetros string.
  [out, retval] BSTR * newparameters
);

Este método es llamado desde el diálogo de configuración cuando el usuario oprime el boton "Opciones" que se muestra si HasOptions retorna TRUE. Una extensión puede mostrar un diálogo de opciones para facilitarle al usuario la configuración de la extensión.

Los parámetros string contienen los parámetros string de la extensión que ya estan establecidos/ingresados.

El parámetro de retorno newparameters debe contener los parámetros string que la extensión construyó de la información que recopiló en su diálogo de opciones. Esos parámetro string es pasado a todos los otros métodos IBugtraqProvider y IBugtraqProvider2.