Una vez que se crean tags en Subversion, es deseable que nadie modifique su contenido, como mucho borrarlos o cambiarle el nombre a la versión, pero no más allá.
Esto puede lograrse añadiendo un script en la carpeta de hooks de la instalación de Subversion.
Editamos el fichero hooks/pre-commit
:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
# Check for modification of tags.
# Reject tag modifications except creation and deletion
$SVNLOOK changed -t "$TXN" "$REPOS" | egrep "/tags/.+$" >/dev/null
if [ $? -eq 0 ] ; then
$SVNLOOK changed -t "$TXN" "$REPOS" | egrep "^[AD].*/tags/[^/]+/$" >/dev/null
if [ $? -ne 0 ] ; then
echo >&2 "Tags modification is not allowed."
exit 1
fi
fi
# All checks passed, so allow the commit.
exit 0
Finalmente lo hacemos ejecutable con chmod +x hooks/pre-commit
y nos aseguramos que el propietario sea el usuario que ejecuta el servidor de Subversion con chown www-data:www-data hooks/pre-commit
.
Actualizado fallo en el script que impedía crear la propia carpeta
tags
.