Cómo establecer un disparador para evitar compromete a SVN con la propiedad mergeinfo?

StackOverflow https://stackoverflow.com/questions/2004981

  •  18-09-2019
  •  | 
  •  

Pregunta

Me gustaría evitar la creación de svn mergeinfo en nada más que la raíz de las ramas. Tenemos una rama del tronco y algunas otras ramas.

Suponiendo que no sé absolutamente nada acerca de los factores desencadenantes SVN, lo que pasos debo seguir para configurar un gancho que impide adiciones de propiedades mergeinfo a cualquier cosa, pero la raíz de las ramas?

pre-commit

El tronco se encuentra en la base del repositorio "/ tronco", y todas las ramas están en "/ ramas / foo"

¿Fue útil?

Solución

Básicamente, es necesario definir un SVN gancho pre-commit . Primero, sin embargo, leer sobre ganchos en general.

Es probable que desee comenzar con la copia del archivo de pre-commit.tmpl a pre-commit, e implementar la lógica en ese país.

Es probable que desee examinar el diff de la transacción que se está ejecutando para líneas como:     Añadido: SVN: mergeinfo

Dado que la información sobre el archivo que esto se añadió a está en una línea diferente, es posible que necesite una herramienta de procesamiento más complejo que grep -. Tal vez un simple script en Perl

Cuando se determina que una transacción tiene una propiedad adicional de que no desea, puede bloquear la confirmación; o, si usted es especialmente audaz, que podrían tratar de modificar la transacción y continuar.

Otros consejos

El siguiente debería funcionar. Su repositorio ya tiene la propiedad svn: info de fusión en el tronco, por lo que nunca quiere que nadie se agregue de nuevo.

Por cierto, nuestra gancho real también se asegura de que cada confirmación se acompaña de un mensaje de registro y también protege contra la supresión de algunos de nuestros importantes directorios de nivel superior a través de navegador de repositorios.

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top