2008-11-24 24 views
8

Estoy trabajando en un proyecto en el que hay archivos de configuración, uno en cada uno de los entornos donde se implementará la aplicación.Subversion Hook

Cuando un desarrollador modifica uno de estos archivos, no se debe permitir que el desarrollador registre el archivo individualmente, pero compruebe todos los archivos o al menos el desarrollador debe ser informado de que esto debe hacerse.

¿Cómo lo podemos lograr?

Respuesta

12

Creo que podría escribir un gancho precompromiso para hacer esto - solo tenga una lista de archivos donde si uno está comprometido, entonces todos deben estar comprometidos.

Puede escribir ganchos en cualquier idioma en el que pueda escribir una aplicación de línea de comandos. El único inconveniente es que se ejecutan en el contexto del servidor SVN, y (al menos tradicionalmente, no sé si esto se mejora), no se les da mucho ambiente cuando comienzan - usted puede quedar atrapado por la falta de 'PATH', por ejemplo.

Su repositorio tendrá ejemplos de archivos por lotes/ganchos de script de shell en el directorio 'hooks', pero también los he escrito en C# en el pasado.

Este http://wordaligned.org/articles/a-subversion-pre-commit-hook parece una buena introducción general a los ganchos de precompromiso.

1

No, para obtener información acerca de la transacción, su secuencia de comandos simplemente puede consultar svn acerca de los detalles. Y svn puede proporcionar esa información, no necesita estar en el mismo servidor.

Lo que quiere decir es que cuando la subversión ejecuta su gancho se ejecuta w/o un entorno y por el servidor SVN sí. Cualquier recurso externo que necesite su enlace svn debe ser accesible desde la cuenta del servidor svn. Por lo que está preguntando, esto puede no ser un problema, suponiendo que no necesita algún tipo de acceso a una base de datos externa o similar para comparar la transacción.

Su mejor opción es mirar algunos de los ganchos de subversión that come with svn para ver ejemplos. También SVN Hook Arguments enumera cómo se llama cada gancho.