2009-03-06 3 views
2

J'ai un projet dans lequel j'aimerais incorporer le numéro de révision automatiquement.

Dans ce cas, il s'agit d'un script Perl multi-fichiers. Dans le fichier principal, j'ai une ligne qui ressemble à ceci:

my $ revision = '$ Révision: 24 $';

Lorsque je fais une version, je vérifie le projet à mon dir.

Le numéro de révision change à chaque fois que j'enregistre une modification de THAT FILE. L'attribut $ Revision $ est mis à jour lors de l'enregistrement, mais pas lors de l'extraction.

La chose est, le fichier principal ne change pas souvent, alors même que les autres fichiers du projet sont maintenant à 27, le principal a encore 24.

Est-il possible que je puisse obtenir le fichier principal pour refléter le dernier numéro de rev? Celui qui svn imprime à la fin de la caisse, c.-à-d. "Checked out révision 27."

+0

Jetez un oeil à la commande svnversion. Ce que vous voulez faire nécessitera probablement une étape de post-traitement. –

Répondre

1
if (! -e '.version') 
{ 
    open VERSION, '>.version'; 
    print VERSION `svnversion -n | cut -f1 -d:`; 
    close VERSION; 
} 

my $revision = '$Revision: ' . `cat .version` . ' $'; 

(Note: un chiot va mourir si vous utilisez ce code tel quel)

+0

Pourquoi ne pas utiliser directement la sortie de la commande svnversion au lieu de créer un fichier temporaire? –

+0

Si vous ne voulez pas exécuter 'svnversion' chaque fois que votre script est exécuté. –

2

Il est similaire à CVS, vous pouvez utiliser $ Revision $ vous suffit de définir la propriété mot-clé pour ce fichier pour que SVN sache qu'il est censé faire un mot-clé remplacer.

A partir du manuel:

"Sans svn:. Keywords mis sur ce fichier, Subversion fera rien de spécial Maintenant, nous allons permettre un remplacement du mot-clé LastChangedDate $ svn propset svn:. Mots-clés" Date Auteur "weather.txt propriété 'svn: mots-clés de l'ensemble sur 'weather.txt' $"

http://svnbook.red-bean.com/en/1.5/svn-book.pdf

+0

Bien que ce soit vrai et informatif, il n'est même pas proche de répondre à la question posée. –

Questions connexes