web-dev-qa-db-fra.com

Puis-je revenir en arrière et modifier les commentaires sur un enregistrement SVN?

J'ai mis une erreur dans un commentaire dans SVN. Puis-je modifier cela après l'enregistrement?

58
leora

Les messages de validation sont "propriétés non versionnées" et peuvent être modifiés avec la commande svn propset , par exemple

$ svn propset --revprop -r 25 svn:log "Journaled about trip to New York."
property 'svn:log' set on repository revision '25'

Ceci définit la propriété de révision appelée "svn: log" sur la révision 25

Configuration de Subversion pour autoriser les modifications des propriétés de révision

Parce qu'ils ne sont pas versionnés, une installation par défaut de Subversion ne vous permettra pas de modifier ces propriétés à moins que vous ne fournissiez un script de hook pre-revprop-change .

Voici un script typique, à partir de/var/lib/svn/hooks/pre-revprop-change sur mon système:

#!/bin/sh

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

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then 
  echo "$1 $2 $3 $4 $5" >> /var/lib/svn/logchanges.log
  exit 0; 
fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

Cela enregistre les modifications apportées aux propriétés de révision svn: log et autorise la modification à l'aide de l'exit 0, toute autre modification de la propriété de révision est refusée à l'aide de l'exit 1. Voir la réponse de patmortech pour un équivalent Windows.

65
Paul Dixon

Pour activer la modification de la propriété de révision, vous devez créer un script de hook pré-revprop-change. Vous pouvez lire à ce sujet ici: http://svnbook.red-bean.com/en/1.0/ch05s02.html (recherchez la section Hook Scripts).

Pour Windows, voici un lien vers un exemple de fichier de commandes qui autorise uniquement les modifications du message de journal (pas d'autres propriétés): http://ayria.livejournal.com/33438.html . Copiez simplement le code ci-dessous dans un fichier texte et nommez-le pre-revprop-change.bat et enregistrez-le dans le sous-répertoire/hooks de votre référentiel.

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1
55
patmortech

Un moyen de modifier rapidement le message du journal sans avoir à créer un script de hook pré-revprop-change consiste à utiliser le svnadmincommande suivant:

svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE

REPOS_PATH est le chemin d'accès au référentiel sur le serveur (par exemple/srv/svn/repository) et N est le numéro de révision (par exemple 25) et FILE est un fichier texte contenant l'entrée correcte du journal de validation.

Deux choses: cela nécessite un accès du système de fichiers aux fichiers du référentiel, mais il en va de même pour la création d'un script de hook pré-revprop-change ... et deuxièmement, cette commande contournera tous les scripts de hook qui peuvent être en place, donc utilisez-le à bon escient ...

23
Kit Roed

L'utilisation de Tortoise SVN vous facilitera la tâche. Ouvrez simplement la fenêtre des messages du journal, cliquez avec le bouton droit sur le journal de révision que vous souhaitez modifier et choisissez Modifier le journal dans le menu contextuel.

9
Dan

Dans Tortoise SVN, vous pouvez suivre les étapes ci-dessous.
1. Accédez au navigateur de référentiel.
2. Faites un clic droit sur le dossier sur lequel vous souhaitez travailler.
3. Cliquez sur Afficher le journal.
4. Dans la liste des révisions, sélectionnez et faites un clic droit sur la révision souhaitée.
5. Cliquez sur Modifier le message du journal.

Vous pouvez maintenant modifier vos commentaires dans la révision de consignation svn.

Merci!

6
Aung Chan Myae
svn propset svn:log --revprop -r <REVISION> "My corrected log message" <PATH-TO-REPOSITORY> 
4
David Snabel-Caunt

Dans Eclipse (ou Rational Application Developer) à l'aide de Subclipse:

choisissez Équipe -> Afficher l'historique, puis cliquez avec le bouton droit sur la révision dont vous souhaitez modifier les commentaires, puis choisissez "Définir les propriétés de validation" et vous pouvez modifier le commentaire et/ou l'auteur.

4
user244298