Commentez vos fichiers source automatiquement grâce aux keywords Subversion

Tagged:  •    •  

Je me suis toujours demandé comment les bons développeurs faisaient pour renseigner aussi parfaitement les premières ligne de commentaire de leur fichiers source. On y retrouve très souvent la dernière personne ayant fait une modification, la révision, la date de dernière modification.... Bref, toutes ces informations aussi importantes que pénibles à mettre à jour. Aujourd'hui, j'ai décidé de résoudre ce mystère en demandant à mon bon ami google. La réponse étant pourtant simple: Subversion et ses keywords.

Présentation des Keywords SVN

Eh oui, la solution était dans le manuel. Subversion propose en standard un méchanisme pour substituer certaines chaines de caractères (les keywords) par des valeurs dynamiques. Plus précisément:

Keyword Substitution - Subversion has the ability to substitute keywords—pieces of useful, dynamic information about a versioned file—into the contents of the file itself. Keywords generally provide information about the last modification made to the file. [Les bookmarks delicious des rédacteurs]

En fait, la liste des mots clé supportés est la suivante:

  • Date (ou LastChangedDate) - date de dernière modif (remplacé par $Date: 2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006) $)
  • Author (ou LastChangedBy) - dernier auteur à avoir modifié le fichier (remplacé par $Author: fbollon $)
  • Revision (ou LastChangedRevision ou Rev) - révision du fichier (remplacé par $Revision: 144 $)
  • Id - identifiant du fichier rassemblant les infos ci-dessus
  • HeadURL (ou URL) - Url du fichier dans subversion

Utilisation des Keywords SVN

Passons à présent aux travaux pratiques. Pour ce faire, il suffit donc d'ajouter dans votre fichier ces mots clé entourés de symbole '$' tel que :

/**
* @version $Revision$
* @modifiedby $Author$
* @lastmodified $Date$
*/

Ensuite, il faut avertir SVN que le fichier modifié contient des keywords. Il faut donc définir une nouvelle propriété au niveau du fichier:

> svn propset svn:keywords "Date Author Revision" foo.php

Attention, le résultat ne sera visible que dans les working copy (ou les exports) et après avoir fait un commit. De même, les données ne seront mises à jour qu'après avoir fait un update. Dans le repository SVN, seuls les mots clé sont affichés. Au niveau des fichiers, le résultat est alors le suivant:

/**
* @version $Revision: 296 $
* @modifiedby $Author: fbollon $
* @lastmodified $Date: 2008-10-06 16:09:13 +0200 (Mon, 06 Oct 2008) $
*/

Comme généralement, il faut appliquer cette modification à une série de fichiers, on peut utiliser la ligne de commande pour accélerer les choses:

> find . -name "*.php" -exec svn propset svn:keywords "Date Author Revision" {} \;