30 votes

Comment obtenir le numéro de révision svn en PHP?

Je veux que mon application PHP soit étiquetée avec le numéro de révision qu'elle utilise, mais je ne veux pas utiliser CruiseControl ou mettre à jour un fichier et le télécharger à chaque fois. Comment dois-je procéder?

53voto

daremon Points 3171

SVN mots-clés n'est pas une bonne solution. Comme d'autres ont souligné l'ajout de $Revision$ dans un fichier seulement affecte le fichier spécifique, ce qui ne change pas pendant un long moment.

Se souvenir de "modifier" un fichier (par ajout ou suppression d'une ligne vide) avant chaque commit est inutile. Vous pourriez tout aussi bien le type de la révision à la main.

Une bonne façon de le faire (que je connais) est d'avoir un déploiement automatisé processus (qui est toujours une bonne chose) et en utilisant la commande svnversion. Voici ce que je fais:

Partout où j'ai besoin de la révision je fais un include: <?php include 'version.php'; ?>. Ce "version.php" fichier seulement le numéro de révision. En outre, il ne fait pas partie du référentiel (mis à être ignoré). Voici comment j'ai créer:

1) Sur les projets où le SVN est installé sur le serveur, je l'utilise aussi pour le déploiement. Obtenir la dernière version sur le serveur, j'ai un script qui, entre autres choses, est le suivant (il s'exécute sur le serveur):

cd /var/www/project
svn update
rm version.php
svnversion > version.php

2) Sur les projets où le SVN n'est pas installé mon script de déploiement est plus complexe: il crée le version.php fichier localement, zips le code, les téléchargements et l'extrait

16voto

Oli Points 65050

En supposant que votre racine Web est une copie extraite de l'arborescence de subversion, vous pouvez analyser le fichier /.svn/entries et raccorder le numéro de révision (4e ligne ici) ...

En PHP:

 $svn = File('.svn/entries');
$svnrev = $svn[3];
unset($svn);
 

8voto

Nathan J. Brauer Points 4316

C'est ainsi que je l'ai fait fonctionner. Si votre serveur est configuré pour autoriser shell_exec ET que SVN est installé, lancez simplement:

 $revision = `svnversion`;
 

ou

 $revision = shell_exec('svnversion');
 

4voto

Espo Points 24318

À partir de cette réponse:

Vous pouvez le faire par l'adjonction de ce qui suit n'importe où dans votre code

$Id:$

Ainsi, par exemple, Jeff a fait:

<div id="svnrevision">svn revision: $Id:$</div>

et lorsque cette case est cochée dans la serveur remplacé $Id:$ avec le courant numéro de révision. J'ai aussi trouvé cette référence.

Il y a aussi $Date:$, $Rev:$, $Revision:$

3voto

Mark Points 194

Peu tard maintenant, mais l'utilisation d'une Subversion post-commit hook. Dans votre référentiel crochets du dossier, créez un script shell comme celui-ci:

#!/bin/bash

REPOS="$1"
REV="$2"

cd /web/root
rm -f /web/root/templates/base.html
/usr/bin/svn update
/bin/sed -i s/REVISION/$REV/ /web/root/templates/base.html

Cet exemple suppose que votre site est dans /web/root et le développement de code est occupé ailleurs. Lorsque vous validez un dev changement, le script supprime l'avant live template (pour éviter les messages de conflit), exécute la mise à jour et remplace les occurrences de RÉVISION dans le modèle avec le numéro de révision.

Plus sur les crochets ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X