web-dev-qa-db-fra.com

Changer le message de validation SVN rétroactivement?

Je voudrais réécrire un grand nombre de messages de validation SVN dans une structure différente, par ex. préfixez une catégorie. De:

"foo" now accepts "bar" format for connection string.

Je voudrais

core - database - "foo" now accepts "bar" format for connection string.

Existe-t-il un moyen simple de le faire qui pas inclut le vidage de l'ensemble du référentiel à l'aide de svndumpfilter?

Je travaille avec TortoiseSVN côté client et VisualSVN côté serveur. (VisualSVN est un wrapper autour du classique svn, auquel je peux également parler via la ligne de commande.)

83
Pekka 웃

Oui, les messages de validation peuvent être modifiés. Ils sont implémentés en tant que propriétés sur les révisions, similaires aux propriétés de fichier standard.

Dans la fenêtre du journal TortoiseSVN, vous pouvez cliquer avec le bouton droit sur un commit et sélectionner "Modifier le message du journal".

96
JesperE

Vous pouvez certainement modifier les messages du journal rétroactivement, c'est couvert dans la FAQ . Je ne sais pas comment fonctionne l'interface de ligne de commande pour VisualSVN, mais pour Vanilla svn, la commande serait

svn propset -r N --revprop svn:log "new log message" URL

Si vous souhaitez effectuer cette opération pour toutes les révisions sans vider le référentiel et le recharger, vous pouvez créer un script pour que cette commande fonctionne sur une liste de toutes les révisions. Cela prendrait un certain temps pour le faire, en fonction de la taille de votre référentiel, mais en principe il n'y a aucune raison pour que vous ne puissiez pas le faire, et cela n'implique pas de vidage et de rechargement.

De plus, Vanilla SVN possède une commande svnlook qui est en quelque sorte un outil d'administration qui fonctionne directement avec les fichiers du référentiel. Cet outil ne comprend pas les URL (vous devez avoir un accès de niveau système de fichiers au référentiel), mais est beaucoup plus rapide. La syntaxe est un peu différente, mais vous pouvez modifier les propriétés de la même manière en utilisant cet outil.

58
Adam Bellaire

Oui, vous pouvez, mais vous devez d'abord l'activer sur le référentiel.

Dans le référentiel, dans le répertoire hooks, se trouve un fichier appelé pre-revprop-change.tmpl. Il contient quelques pages de commentaires sur ce qu'il fait et est configuré pour n'autoriser que les modifications des propriétés du journal. Pour l'activer, renommez le fichier en pre-revprop-change et rendez-le exécutable (je suppose une Subversion hébergée par POSIX, si vous utilisez Windows to Host, vous pourriez trouver ce message utile ).

Une fois que le référentiel le permet, vous pouvez utiliser Tortoise pour modifier le message de journal pour une validation dans le menu contextuel sur une validation, ou vous pouvez utiliser la ligne de commande.

26
Andrew Aylett

Utilisation svn propset sur le svn:log propriété. Exemples dans le livre svn .

7
Josh Lee

svn propedit -r N --revprop svn:log URL

URL ci-dessus est facultatif si vous êtes déjà dans un répertoire de travail. Un éditeur apparaîtra alors pour que le message puisse être modifié.

2

Je viens de rencontrer ce problème avec le problème exact, en utilisantTortoise SVN pour le client et VisualSVN sur un serveur Windows.

S'il vous arrive d'avoir un message d'erreur "une demande DAV a échoué" , jetez un œil à réponse d'Andrew Aylett et allez modifier "pre-revprop-change.tmpl" dans votre sous-répertoire hooks du référentiel.

Une fois cela fait, frapper "éditer le message du journal" dans le menu contextuel devrait enfin fonctionner!

1
Julien B.