Changer le message de validation SVN rétroactivement?

85

Je voudrais réécrire un grand nombre de messages de validation SVN dans une structure différente, par exemple préfixer 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 n'inclut pas le vidage de l'ensemble du référentiel à l'aide svndumpfilter?

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

Pekka
la source

Réponses:

98

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 normales.

Dans la fenêtre TortoiseSVN Log, vous pouvez faire un clic droit sur un commit et sélectionner "Edit log message".

JesperE
la source
+1 Merci pour cela. J'ai fait un travail impliquant des changements d'API que je voulais commettre séparément au reste, et j'ai écrit le message de journal pour refléter cela ... avant de commettre accidentellement tout le lot. Je l'ai "corrigé" en validant un changement d'espaces avec un message de journal qui expliquait le reste! la prochaine fois, je saurai quoi faire.
Ed Daniel du
1
J'ai également donné un +1, mais cela n'a pas fonctionné avec un message "Le référentiel n'a pas été activé pour accepter les changements de version; demandez à l'administrateur de créer un hook pré-revprop-change". L'administrateur saura-t-il automatiquement ce qu'il faut faire?
J.Merrill
19
Me demandez - vous si vous avez un administrateur Subversion compétent? :)
JesperE
@ J.Merrill Vous devez parcourir le hooksdossier à l'emplacement du référentiel et renommer le pre-revprop-change.tmplen pre-revprop-change.batpour qu'il fonctionne.
sa_leinad
59

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 voulez faire cela pour toutes les révisions sans vider le référentiel et recharger, vous pouvez script cette commande pour travailler 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 que vous ne puissiez pas le faire, et cela n'implique pas de vidage et de rechargement.

De plus, vanilla SVN a une commande svnlookqui est une sorte d'outil administratif qui fonctionne directement avec les fichiers du référentiel. Cet outil ne comprend pas les URL (vous devez avoir un accès au niveau du système de fichiers au référentiel), mais il 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.

Adam Bellaire
la source
3
Merci @kazark, j'ai dû faire svn propedit -r N --revprop svn:logpour pouvoir changer le message dans mon éditeur.
tutuDajuju
3
Juste pour ajouter une note: par défaut, cette commande ne fonctionnera pas, car les modifications des propriétés de révision ne sont pas autorisées par défaut. Pour l'autoriser, l'administrateur svn doit créer un hook appelé "pre-revprop-change" . Ces informations sont dans la FAQ comme mentionné ci-dessus.
Matthias
sous Windows, vous devrez définir la variable d'environnement "SVN_EDITOR", "VISUAL" ou "EDITOR" avant d'exécuter la commande. Par exemple:set SVN_EDITOR=notepad.exe
Enwired
26

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 pour héberger, vous pourriez trouver ce message utile).

Une fois que le référentiel l'autorise, vous pouvez utiliser Tortoise pour modifier le message du journal pour un commit à partir du menu contextuel sur un commit, ou vous pouvez utiliser la ligne de commande.

Andrew Aylett
la source
+1 Excellente information monsieur. Cela ne me laissera pas le faire sans un crochet pré-revprop-change. Je vais devoir porter le script bash du modèle sur Windows, mais cela ne devrait pas poser de problème.
Pekka le
J'ai ajouté un lien vers un exemple de script de commande: svn.haxx.se/users/archive-2006-03/0107.shtml
Andrew Aylett
2

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

URLci-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é.

Raffi Khatchadourian
la source
1

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

Si vous avez un message d'erreur "une demande DAV a échoué" , jetez un œil à la réponse d'Andrew Aylett et allez éditer "pre-revprop-change.tmpl" dans le sous-répertoire hooks de votre référentiel.

Une fois que cela est fait, cliquer sur "modifier le message du journal" dans le menu contextuel devrait enfin fonctionner!

Julien B.
la source