Actuel de révision Subversion de commande
Est-il une Subversion de commande pour afficher le numéro de révision?
Après svn checkout
je veux lancer un script et besoin le numéro de révision dans une variable. Ce serait génial si il existe une commande comme svn info get_revision_number
.
Vous devez vous connecter pour publier un commentaire.
Des versions plus récentes de svn soutenir le
--show-item
argument:Pour le numéro de révision de votre copie de travail locale, utilisation:
Vous pouvez utiliser
os.system()
pour exécuter une ligne de commande comme ceci:Je faire dans mon nightly build scripts.
Aussi, sur certaines plateformes, il y a un
svnversion
de commande, mais je pense que j'avais raison de ne pas l'utiliser. Ahh, à droite. Vous ne pouvez pas obtenir le numéro de révision distance à partir d'un référentiel pour la comparer à celle locale à l'aide de svnversion.cmd.exe
balise dans la question d'origine, ce qui implique que l'OP est en Windows, où vous ne pouvez pas utilisergrep
etawk
.svn info
(comme avec le sous-processus module), la lecture de la sortie et de faire le grep/awk suit directement en Python (if "Revision" in line: return line.split()[1]
) est généralement à la fois plus simple et plus facile que d'essayer d'écrire des commandes bash, Python.grep
:svn info | awk '/Revision/ { print $2; }'
svn info | awk '/^Revision:/ {print $2;}'
LANG=C svn info | grep "Revision" | awk '{print $2}'
invalid option: --show-item
Il est également plus pratique (pour certains)
svnversion
commande.Sortie peut être un seul numéro de révision ou quelque chose comme ceci (à partir de -h):
- Je utiliser cet extrait de code python pour extraire les informations relatives à la révision:
Tout d'abord svn status a le numéro de révision, vous pouvez le lire à partir de là.
Aussi, chacun des fichiers que vous stockez dans SVN peut stocker le numéro de révision en elle-même, d'ajouter le
$Rev$
mot-clé de votre fichier et de l'exécuter propset:svn propset svn:keywords "Revision" file
Enfin, le numéro de révision est également dans
.svn/entries
fichier, quatrième ligneMaintenant à chaque fois que vous extrayez ce fichier, il aura la révision en lui-même.
REV=
svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep 'Revision:' | cut -d\ -f2
svn info
, Je crois, est ce que vous voulez.Si tu voulais juste la révision, peut-être que vous pourriez faire quelque chose comme:
Utiliser quelque chose comme ce qui suit, profitant de la sortie XML de subversion:
Note également que, selon ce que vous en avez besoin pour, la
<commit revision=...>
entrée peut être plus de ce que vous cherchez. Qui donne de la "Dernière modification Rev", ce qui ne changera pas jusqu'à ce que le code de l'arborescence actuelle ne change réellement, par opposition à la "Révision" (ce que le ci-dessus donne) qui changera quoi que ce soit dans les changements de référentiel (même les branches) et vous faites un "svn up", qui n'est pas la même chose, ni souvent utile.svnversion
? Il a documenté compact de sortie et ne nécessite pas de quelque chose de ce complexe à analyser.Juste utilisé @badcat réponse dans une version modifiée, à l'aide de
sous-processus.check_output()
:Je crois que vous pouvez aussi installer et utiliser pysvn si vous souhaitez utiliser python pour l'interface avec svn.
Personne ne citer pour le monde Windows SubWCRev, qui, bien utilisées, peuvent se substituer les données nécessaires dans les endroits qui en ont besoin automatiquement, si le script d'appel SubWCRev en forme
SubWCRev WC_PATH TPL-FILE READY-FILE
Échantillon de mon post-commit hook (une partie de)
où mon Constructeur.tpl est
comme résultat, j'ai à chaque fois de chauve-souris fichier avec partie variable nom de la dir - ce qui correspond aux métadonnées de la Copie de Travail
Je pense que j'ai à faire, svn info et ensuite récupérer le numéro de manipulation de chaîne de "Révision: xxxxxx"
Il serait juste sympa, si il y avait une commande qui renvoie simplement le nombre 🙂
Sinon pour l'ancienne version, si '--show-item' est ne pas reconnaître, vous pouvez utiliser la commande suivante :
Espère que cela aide.