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?
Réponses
Trop de publicités?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
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');
À 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:$
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