7
votes

Comment obtenir de manière programmable le numéro de révision SVN?

Comme cette question , mais sans la nécessité d'interroger réellement le serveur SVN. Ceci est un projet Web, donc je pense que je vais simplement utiliser le référentiel comme point de vue public (à moins que quelqu'un ne puisse me conseiller pourquoi c'est une mauvaise idée). Je suppose que cette information est dans un fichier dans le dossier .svn quelque part, mais où, et comment puis-je l'analyser? Je veux faire quelque chose comme quoi de même, avoir la révision dans le coin inférieur droit.

code dans Python ou PHP apprécié si vous l'avez à la main, ou juste un point dans la bonne direction.


0 commentaires

9 Réponses :


3
votes

Vous pouvez obtenir le numéro de révision actuel d'une commande à l'aide de la ligne de commande, " info SVN code>".

Par exemple: P>

$ svn info --xml
<?xml version="1.0"?>
<info>
<entry
   kind="dir"
   path="."
   revision="185">
<url>http://.../trunk</url>
<repository>
<root>http://...</root>
<uuid>128b9c1a-...-612a326c9977</uuid>
</repository>
<wc-info>
<schedule>normal</schedule>
<depth>infinity</depth>
</wc-info>
<commit
   revision="185">
<author>...</author>
<date>2009-09-28T18:12:29.130307Z</date>
</commit>
</entry>
</info>


1 commentaires

J'espérais une méthode autre que l'analyse svn info mais je suppose qu'il s'agit d'une solution valide. Produit probablement des informations plus cohérentes que d'analyser un fichier ... le - xml que je ne connaissais pas; devrait rendre les choses plus faciles.



4
votes

Je voudrais probablement écrire le numéro de version à un fichier texte quelque part sur le site Web à l'aide du crochet post-validation, puis il suffit de lire ce fichier lors du chargement de votre page.

Plus sur l'utilisation des crochets ici


3 commentaires

Je ne peux pas dire si vous êtes sarcastique ou non, mais cela me semble plus efficace que de bombarder ou de never que SVN puis de l'analyse de la production.


Non pas du tout. Je ne voulais pas que cela puisse sortir de cette façon :)


..Je signifiait que cela semble beaucoup plus efficace que d'exécuter un processus externe sur chaque charge de page. Je pense que la lecture d'un fichier texte serait en réalité plus efficace.



0
votes

Vous pouvez simplement enregistrer la ligne de commande et exécuter SVN Info. N'oubliez pas que cela pourrait être une révision mixte. Vous pouvez également exécuter un svn up et la dernière ligne de stdout vous donnera le numéro de révision.

ou, voulez-vous utiliser l'API SVN? Vous voudrez peut-être aussi consulter le code TortoiseSVN de SubWREV qui est utilisé pour remplacer un jeton dans un fichier avec les révisions actuelles du WC.


0 commentaires

2
votes

J'aime la solution utilisée par MediaWiki, lisant le contenu de .svn / entités . Vérifiez la première réponse sur cette question: Obtenir le numéro de référentiel de subversion dans le code


0 commentaires

2
votes

Si vous recherchez une implémentation de Python, consultez PYSVN , vous pouvez invoquer le commande info pour obtenir des détails y compris la révision actuelle:

entry = info( path )


0 commentaires

3
votes

Ceci fonctionne pour SVN version 1.6.2. Mais soyez averti, différentes versions SVN utilisent différents formats du dossier .SVN.

<?php

$contents = file_get_contents(dirname(__FILE__) . '/.svn/entries');
preg_match("/dir\n(.+)/", $contents, $matches);
$svnRevision = $matches[1];

print "This Directory's SVN Revsion = $svnRevision\n";


0 commentaires

3
votes

Suivre la lance, voici une ligne de commande One-Liner. XXX


0 commentaires

13
votes

Subversion inclut le Svnversion Outil pour exactement cet objectif. Une copie de travail peut réellement avoir des modifications locales ou consister en une combinaison de révisions. svnversion sait comment gérer cela; Voir les exemples de la documentation liée.

Vous pouvez appeler svnversion de python comme ceci: xxx



1
votes

Je sais que c'est assez vieux, mais je pensais offrir comment je fais cela dans PHP pour mes applications Web:

Mettez ceci dans un fichier PHP dans votre application et définissez la propriété SVN Mots-clés pour " Date de révision Authorly ID "(substitution des mots-clés dans le fichier). xxx

Ainsi, après le remplacement des mots-clés sur le fichier source, la ligne $ SVN_REV ressemblera à: xxx

de sorte que la sortie de stripsvnstuff ($ svn_rev) serait "6" (sans citations).


0 commentaires