Existe-t-il un moyen de modifier le message du journal d'une certaine révision dans Subversion? J'ai accidentellement écrit le mauvais nom de fichier dans mon message de validation, ce qui pourrait prêter à confusion plus tard.
J'ai vu Comment modifier un message de validation incorrect dans Git? , mais la solution à cette question ne semble pas être similaire pour Subversion (selon svn help commit
).
pre-revprop-change
script qui permet à l'utilisateur qui s'engage de modifier son journal jusqu'à 3 heures après la validation. Il s'agit d'un excellent compromis entre flexibilité / journaux précis et maintien de la fidélité du référentiel: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Réponses:
Pour ce faire, vous devez essentiellement avoir des droits d'administrateur (directement ou indirectement) sur le référentiel. Vous pouvez soit configurer le référentiel pour permettre à tous les utilisateurs de le faire, soit modifier le message du journal directement sur le serveur.
Voir cette partie de la FAQ Subversion (soulignement le mien):
la source
Lorsque vous exécutez cette commande,
et juste au cas où vous voyez ce message:
C'est parce que Subversion ne vous permet pas de modifier les messages du journal car ils ne sont pas versionnés et seront définitivement perdus.
SVN hébergé sous Unix
Allez dans le répertoire hooks de votre serveur Subversion (remplacez ~ / svn / reponame par le répertoire de votre dépôt)
Supprimer l'extension
Rendez-le exécutable (ne peut pas faire chmod + x!)
La source
SVN hébergé par Windows
Les fichiers de modèle dans le répertoire hooks ne peuvent pas être utilisés car ils sont spécifiques à Unix. Vous devez copier un fichier de commandes Windows
pre-revprop-change.bat
dans le répertoire hooks, par exemple celui fourni ici .la source
Voici une variante pratique que je ne vois pas mentionnée dans la FAQ. Vous pouvez renvoyer le message actuel pour modification en spécifiant un éditeur de texte.
la source
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
la source
J'ai également été récemment chargé de cela.
Nous voulions permettre à nos programmeurs de modifier uniquement leurs propres messages de validation et de limiter la distance à laquelle ils sont autorisés à le faire. Nous avons décidé qu'ils seraient autorisés à modifier tous les messages de journal commis ce jour-là, à corriger les fautes de frappe, etc.
Après avoir regardé quelques autres exemples en ligne, j'ai piraté cela ensemble, nous sommes dans un environnement Windows, voici donc notre contenu de
pre-revprop-change.bat
:Edit: L'idée originale pour cela est venue de ce fil :
la source
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
, j'ai dû passer à des guillemets doubles autour des deux variables. (Vous ne croiriez pas combien de temps cela a pris pour comprendre.) Sinon, j'obtiendrais des choses comme "== '02' est inattendu en ce moment" (le 2ème jour du mois). Mon batch-fu n'est pas assez fort pour savoir pourquoi cela se produit, mais au cas où quelqu'un d'autre rencontrerait des problèmes étranges, cela pourrait aider.Sous Windows, en utilisant le client Tortoise SVN:
Si cela ne fonctionne pas, cela pourrait être dû à la configuration de SVN sur le serveur, lisez les autres réponses ici.
la source
Si vous utilisez un IDE comme eclipse, vous pouvez utiliser cette méthode simple.
En cela
right click on the revision id for your commit and select 'Set commit properties'
.Vous pouvez modifier le message comme vous le souhaitez à partir d'ici.
la source
Si votre référentiel permet de définir les propriétés de révision via le hook pré-revprop-change, vous pouvez modifier les messages de journal beaucoup plus facilement.
Ou dans TortoiseSVN, AnkhSVN et probablement de nombreux autres clients de subversion en cliquant avec le bouton droit sur une entrée de journal, puis en modifiant le message de journal.
la source
La FAQ Subversion couvre cela, mais utilise un tas de termes indéfinis confus comme
REPOS_PATH
sans donner d'exemples réels.Cela peut prendre quelques essais pour le faire fonctionner, alors enregistrez votre message de validation mis à jour dans un fichier. Contrairement aux
svn-commit.tmp
fichiers, Subversion ne conservera pas votre frappe en cas de problème.Dans votre répertoire de travail, exécutez
svn propedit -r N --revprop svn:log
pour modifier le message de validation. Si cela fonctionne, tant mieux! Mais ce ne sera probablement pas le cas, car la
svn:log
propriété de révision n'est pas versionnée et Subversion par défaut vous empêchera de l'écraser, soit avec le script de hook , soit avecpre-revprop-change
un message d'erreur indiquant que vous n'avez pas un tel hook.Pour modifier les hooks, vous devez avoir accès au système de fichiers sur lequel le référentiel est hébergé.
svn info
vous indiquera la racine du référentiel. Supposons que ce soit~/svnrepo
.cd
à~/svnrepo/hooks
pre-revprop-change
oupre-revprop-change.bat
? Si tel est le cas, mettez temporairement en commentaire la partie de celle-ci qui est abandonnée si vous essayez de changersvn:log
.Sinon, sous Windows, créez un fichier vierge appelé
pre-revprop-change.bat
. Voici une façon de procéder:Sinon, sous Unix, exécutez
Dans la copie de travail, exécutez à
svn propedit -r N --revprop svn:log
nouveau~/svnrepo/hooks/svn-revprop-change
(.bat
)la source
J'ai trouvé une bonne implémentation du crochet pré-rév-prop-change côté serveur sur le svnforum: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -shell-script-allow-commiters-to-change-own-log-within-x-hours
Il implémente
Prenez-le à partir de là et modifiez-le à volonté. Je préfère ne pas le copier ici car je ne suis pas l'auteur original et il n'y a pas d'avis de droit d'auteur qui me permettrait de le faire.
la source