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 code dans Python ou PHP apprécié si vous l'avez à la main, ou juste un point dans la bonne direction. P> .svn code> 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. P>
9 Réponses :
Vous pouvez obtenir le numéro de révision actuel d'une commande à l'aide de la ligne de commande, " Par exemple: P> info SVN code>".
$ 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>
J'espérais une méthode autre que l'analyse svn info code> 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 code> que je ne connaissais pas; devrait rendre les choses plus faciles.
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. P>
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.
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. p>
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. p>
J'aime la solution utilisée par MediaWiki, lisant le contenu de .svn / entités code>. Vérifiez la première réponse sur cette question: Obtenir le numéro de référentiel de subversion dans le code a > p>
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 )
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";
Suivre la lance, voici une ligne de commande One-Liner.
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. Vous pouvez appeler svnversion code> sait comment gérer cela; Voir les exemples de la documentation liée.
svnversion code> de python comme ceci: p>
Pourquoi shell = true code>? Voir docs.python.org/2/library/.../ a>
@lorenzog: Cette réponse a presque 7 ans, donc je ne me souviens pas. Si vous avez vérifié que cela fonctionne sans shell = vrai, faites-le-moi savoir et je le modifierai.
Il semble de travailler bien au moins pour moi: Stackoverflow.com/a/37157630/204634 (pour une raison quelconque je peux 't @ -votre Nick ..?)
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). P> Ainsi, après le remplacement des mots-clés sur le fichier source, la ligne $ SVN_REV ressemblera à: p> de sorte que la sortie de stripsvnstuff ($ svn_rev) serait "6" (sans citations). p> p>