2010-02-02 5 views
79

Je voudrais réécrire un grand nombre de messages de validation SVN à une structure différente, par ex. préfixer une catégorie. De:Modifier le message de validation SVN rétroactivement?

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

Je veux

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

est-il un moyen facile de faire ce qui ne pas le dumping du dépôt comprennent tout en utilisant svndumpfilter?

Je travaille avec TortoiseSVN sur le client et VisualSVN sur le serveur. (VisualSVN est un wrapper autour classique svn, à laquelle je peux aussi parler à travers la ligne de commande.)

Répondre

91

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 faire un clic droit sur un commit et sélectionner "Edit log message".

+0

+1 Merci pour cette annonce. J'ai fait un travail impliquant des changements d'API que je voulais commettre séparément pour le 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'espace avec un message de log qui expliquait le reste! La prochaine fois, je saurai quoi faire. –

+1

Je lui ai donné un +1, mais cela n'a pas fonctionné avec un message "Le Repository n'a pas été activé pour accepter les changements de révision, demandez à l'administrateur de créer un hook pre-revprop-change". L'administrateur saura-t-il automatiquement ce qu'il faut faire? –

+19

Demandez-vous * moi * si vous avez un administrateur Subversion compétent? :) – JesperE

57

Vous pouvez certainement modifier les messages de journaux rétroactivement, il est couvert in the FAQ. Je ne sais pas comment l'interface de ligne de commande pour les travaux VisualSVN, mais pour la vanille 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 dumping du dépôt et re-chargement, vous pourriez le script cette commande pour travailler sur une liste de toutes les révisions. Cela dépendrait de la taille de votre référentiel, mais en principe, il n'y a aucune raison de ne pas le faire, et cela n'implique pas de vidage et de rechargement.

En outre, vanille SVN a 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 disposer d'un accès au niveau du système de fichiers dans le référentiel), mais il est beaucoup plus rapide que. 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.

+2

Si vous voulez utiliser votre éditeur: 'svn propedit -r N svn: log'. –

+3

Merci @ kazark, j'ai dû faire '' 'svn propedit -r N --revprop svn: log''' pour pouvoir changer le message dans mon éditeur. – tutuDajuju

+2

Juste pour ajouter une note: par défaut, cette commande ne fonctionnera pas, car ** les modifications apportées aux 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" **. Cette information est [dans la FAQ] (http://subversion.apache.org/faq.html#change-log-msg) comme mentionné ci-dessus. –

24

Oui, vous le pouvez, mais vous devez d'abord l'activer dans 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 autoriser uniquement les modifications des propriétés du journal. Pour l'activer, renommer le fichier en pre-revprop-change et le rendre exécutable (je suppose une subversion hébergée POSIX, si vous utilisez Windows pour héberger, vous pourriez trouver this message utile). Une fois que le référentiel le permet, vous pouvez utiliser Tortoise pour modifier le message de journal pour un commit à partir du menu contextuel d'une validation, ou vous pouvez utiliser la ligne de commande.

+0

+1 Excellente information monsieur. Il ne me laissera pas faire sans un crochet de pre-revprop-changement. Je vais devoir porter le script bash du template sur Windows, mais cela ne devrait pas poser de problème. –

+0

J'ai ajouté un lien vers un exemple de script de commande: http://svn.haxx.se/users/archive-2006-03/0107.shtml –

1

Juste venu à travers ce poste avec le problème exact, en utilisant le protocole SVN pour le client et VisualSVN sur un serveur Windows.

Si vous arrive d'avoir un « une demande de DAV a échoué » message d'erreur, donner un coup d'œil à Andrew Aylett's answer et aller modifier « pre-revprop-change.tmpl » dans votre sous-répertoire hooks du référentiel.

Une fois que cela est fait frapper "modifier le message du journal" dans le menu contextuel devrait enfin travailler!

2

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

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

Questions connexes