Implementación y prueba de un gancho de Subversion

Implementación y prueba de un gancho de Subversion

Fondo
Estoy intentando implementar una serie de enlaces de confirmación para Subversion. He investigado mucho para intentar que funcione un gancho de prueba simple, pero no he tenido suerte.

Como referencia, revisé, seguí y luego intenté combinar métodos de los siguientes enlaces:
1.Manual de subversion para configuración de directorios.
2.Manual de Tortoisevn para scripts de enlace del lado del servidor
3.Una explicación sobre los enlaces del lado del servidor que contiene un enlace al manual de Subversion.
4.El tutorial alineado con palabras para ganchos previos a la confirmación
5.Una respuesta de error del servidor para problemas con ganchos de confirmación

También hay otros sitios a los que he hecho referencia y he utilizado, pero todavía no puedo hacer que funcionen los enlaces de confirmación.

Mi entorno
Mi máquina ejecuta RHEL6 (Cent OS).
La subversión está ubicada en una máquina remota a la que no puedo acceder directamente sin el permiso de mi supervisor.
La máquina remota ejecuta Subversion 1.6.

Esta es la estructura actual de mi repositorio:

test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk  

La confirmación previa del archivo tiene temporalmente sus permisos establecidos en 777. Todos los directorios tienen sus permisos establecidos en 775.

Este es el script de muestra que creé para probar el gancho de confirmación:

#!/usr/bin/env bash

echo "THOU SHALL NOT PASS" 1>&2

exit 1

He verificado y probado todo lo que he podido para asegurarme de que mi gancho de confirmación previa funcione correctamente. No sé qué más necesito comprobar para asegurarme de que funciona. Puedo confirmar lo que quiera y no recibo ningún mensaje en mi pantalla.

Preguntas
1. ¿Hay algo que me he perdido o pasado por alto al implementar ganchos?
2. Si implemento un gancho de esta manera, ¿tengo que preocuparme por implementar el mismo gancho nuevamente en Tortoisesvn?

Cualquier comentario y/o sugerencia será muy apreciado.

Respuesta1

  1. ¿Hay algo que me he perdido o pasado por alto al implementar ganchos?

No utilice el permiso 777. A veces, esto puede resultar contraproducente. Es posible que algunas herramientas no funcionen con permisos tan sospechosos. En su caso, es poco probable que este sea el problema, porque a mí me funciona con esta configuración. Pero simplemente no lo hagas. Cámbielo a 755.

Otra comprobación de cordura que se debe realizar es ejecutar el script de enlace directamente en el servidor:

/path/to/test-for-svn-hooks/hooks/pre-commit

Cuando su script tiene contenido más significativo, también debe probar con los parámetros adecuados, por ejemplo:

/path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN

A continuación, pruébelo mediante un proceso de pago en el propio servidor, por ejemplo:

svn co /path/to/test-for-svn-hooks /tmp/test1
cd /tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'

Según lo que has escrito en tu publicación, estos pasos deberían funcionar. No conozco los detalles de las condiciones bajo las cuales fallan sus pruebas. Si puede llegar a este punto, quizás vea el motivo de sus pruebas fallidas.

  1. Si implemento un gancho de esta manera, ¿tengo que preocuparme por implementar el mismo gancho nuevamente en Tortoisesvn?

No. Los ganchos se definen en el lado del servidor. No es necesario hacer nada del lado del cliente. Todos los clientes estarán sujetos a las reglas que usted defina en el gancho de confirmación previa.

información relacionada