Une bonne partie des informations relatives à un commit SVN peuvent être éditées, comme par exemple le message de log et la date d'un commit. L'édition de ces valeurs n'est pas permise par défaut et requiert la mise en place d'un hook.

Ajout du hook pre-revprop-change pour autoriser l'édition des propriétés SVN

Dans votre repository, créez un fichier hooks/pre-revprop-change ou copiez-le à partir du fichier hooks/pre-revprop-change.tmpl, et donnez les droits en lecture et en execution pour tout le monde. Ce script est executé à chaque changement de propriété et permet de déterminer si une modification est autorisée ou non via sa valeur de retour. Editez le fichier comme ci-dessous :

#!/bin/sh 

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:date" ]; then exit 0; fi

echo "Only svn:log and svn:date revision properties can be changed" >&2
exit 1

Attention ! Ce script permet la modification des propriétés par n'importe quel utilisateur ayant accès au repository. Il est possible de restreindre cet accès en ajoutant une vérification sur la valeur $USER.

Edition du log ou de la date d'un commitSVN

Depuis votre copie de travail, l'édition d'un message de log se fait tout simplement via la commande :

~$ svn propset --revprop -r 25 svn:log "Bugfix 007."

L'édition de la date d'un commit requiert de connaître le format de date employé :

~$ svn propget svn:date --revprop -r1
2007-04-17T22:00:19.308764Z

On peut ensuite éditer la date d'un commit en modifiant cette fois la propriété svn:date :

~$ svn propset svn:date --revprop -r1 "2007-04-18T22:00:19.308764Z"