2010-06-10 8 views
2

Je voudrais prendre tous les messages de validation dans mon journal de subversion et juste les concaténer dans un fichier texte, de préférence en utilisant la ligne de commande svn sur Windows.Comment concaténer tous les messages de validation de subversion dans un fichier texte sans métadonnées?

Chaque message de validation a ce format:

- Message r1
- r1 un message
- r1 un message

Ce que je voudrais quelque chose comme:

- r1 un message
- r1 message
- message r2
- message r2
- r3 un message
[...]
- R1000 un message

Mise à jour

Je pensais que ci-dessus était clair, mais ce que je ne veux pas dans le journal est ce type d'information :

r2130 | utilisateur | 2010-03-19 10:36:13 -0400 (Ven, 19 Mar 2010) | 1 ligne

Pas de méta-données, je veux simplement les messages de validation.

Répondre

6

Vous pouvez utiliser le paramètre --xml de la commande svn log, qui définit le format de sortie sur xml et l'analyser facilement avec un langage de script pour produire le fichier texte dont vous avez besoin.
quelque chose python comme:

from xml.dom.minidom import parse 
xml = parse("log.xml") 
entries = xml.getElementsByTagName("logentry") 
for e in entries: 
    rev = e.getAttribute("revision") 
    msg = e.getElementsByTagName("msg")[0].firstChild.nodeValue 
    print "-r" + rev + " " + msg 

Enregistrer comme parseLog.py, puis il suffit de lancer

svn log --xml > log.xml 
python parseLog.py > revisions.txt 
+0

Il semble qu'il n'y ait pas de moyen facile de le faire avec la ligne de commande seulement, c'est acceptable car la plupart de mes installations ont python. Aussi le "rx" dans le journal était simplement pour identifier le message de journal, pas que je veux le numéro de révision spécifiquement dans le message. Merci cependant, cela fonctionnera avec quelques changements. –

+1

Incroyablement pratique. J'ai utilisé le sous-processus pour mon appel svn, donc j'ai jeté la sortie à StringIO, fait un seek (0), et passé cela à la fonction d'analyse, a fonctionné comme un champion. – pyInTheSky

0

de la ligne de commande windows, pas sûr de savoir comment se débarrasser des lignes de -------

svn log - q > svn.log 
+0

J'ai mis à jour ma question pour être un peu plus clair, car cette méthode ajoute des métadonnées qui ne sont pas souhaitées. –

+0

mise à jour de la réponse. –

+0

Ceci supprime le message de validation, laissant les lignes --------- et l'identifiant de révision. –

0

withn Tortoise SVN vous pouvez faire un clic droit, sélectionnez Tortoise/Afficher le journal. Sélectionnez tous les journaux et collez-les dans un fichier.

+0

J'ai mis à jour ma question pour être un peu plus clair, car cette méthode ajoute également des métadonnées indésirables. –

0

Si vous êtes un développeur Java, vous pouvez utiliser SVNKit pour écrire exactement le type de programme d'extraction de Subversion que vous souhaitez.

Sinon, comme d'autres personnes ont répondu, vous pouvez prendre la sortie du journal et la manipuler manuellement.

1

Comme Davide Gualano suggère que vous pouvez utiliser la commande --xml pour produire une sortie qui peut être analysé. Utilisez un processeur xslt arbitraire et un fichier xslt pour produire la sortie dont vous avez besoin. Voir svn2cl pour un exemple.