Salut,
Un petit nouveau au pays du Nbuild : le fichier « changelog » :^)
Par définition, un fichier changelog est un « journal des modifications
apportées à un programme ou un projet quelconque ». Dans notre cas, il
s'agira des modifications apportées à un paquet Nbuild.
Bonne idée. :)
Le terme « journal » implique qu'il y ait une notion de temps, un auteur et
un
contenu :
- le contenu a déjà été défini précédemment : c'est la liste des
modifications
apportées à une version donnée d'un paquet Nbuild ;
- l'auteur est celui qui réalise ces modifications et qui les notifie dans
le
changelog ;
- le temps est tout simplement la date à laquelle la nouvelle release du
Nbuild est créée avec ces modifications.
Je suis d'accord.
Comment faire figurer toutes ces informations dans le changelog ?
Je propose le principe suivant :
Chaque nouvelle entrée dans le fichier changelog doit être placée au début
du
fichier, _avant_ les éventuelles entrées de modifications qui s'y trouvent
déjà.
Le nbuilder doit juste ajouter une entrée de la forme :
%
<texte sur les modifications apportées à cette version du paquet>
Exemple :
«
%
- Initial release.
»
La version du paquet, l'auteur et la date seront ajoutés automatiquement
par
la commande « Ncooker pack » de la manière suivante :
* elle récupère la première ligne du changelog commençant par %
* si cette ligne ne contient rien d'autre que %, elle y ajoute les infos
pour
obtenir :
% ($NPKG_PRJ_VERSION-nga$NPKG_RELEASE) $NC_PKG_AUTHOR <date>
Exemple :
dans le fichier log, je mets
«
%
- Initial release.
»
après avoir lancé Ncooker pack, le fichier changelog du nbuild contient :
«
% (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005
- Initial release.
»
Le lendemain, je modifie le nbuild. J'incrémente NPKG_RELEASE dans le
fichier
infos, et met à jour le fichier changelog qui devient :
«
%
- Fix permission bits of executable :^)
% (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005
- Initial release
»
après avoir lancé Ncooker pack, il contient :
«
% (1.0-nga2) nom_author <[EMAIL PROTECTED]> Thu Mar 31 13:00:00 2005
- Fix permission bit of executable :^)
% (1.0-nga1) nom_author <[EMAIL PROTECTED]> Wed Mar 30 12:45:06 2005
- Initial release
»
C'est absolument grontrinesque comme solution. :p Globalement, je trouve
cela bien mais cela me pose quelque peu problème.
Je ne sais pas comment vous développer un Nbuild mais, pour ma part, je crée
un répertoire pour le projet que je veux Nbuilder (appelons le 'foo' par
exemple) et j'y met tous les fichiers nécessaires (infos, build, desc, ...).
Ensuite, je me met à la racine de 'foo' et je tape la commande "Ncooker pack
foo". Mon Nbuild est alors créé. Après l'avoir testé, je le publie.
Admettons que quelqu'un me fasse une remarque sur mon Nbuild. Je décide
alors d'améliorer mon Nbuild pour prendre en compte la remarque. Ce que je
vas faire naturellement, c'est de retourner dans mon répertoire 'foo'. Or,
le fichier changelog n'aura pas été bougé et je risque d'oublier de le
mettre à jour.
Je sais que vous allez me dire que j'aurais dû désarchiver le Nbuild mais je
trouve que c'est dommage de s'embêter avec cela. Ce sont des manipulations
pour pas grand chose.
Un peu dans le même esprit, il pourrait être intéressant de trouver un moyen
d'obliger le Nbuilder à incrémenter le numéro de version du Nbuild. Je pense
qu'il sera assez facile de l'oublier.
Dans le cas où le nbuilder ajoute des modifications successives pour une
même
release d'un paquet, il n'a pas besoin de toucher à la ligne commençant par
%, il suffit juste qu'il complète la description de ses modifications.
Lorsqu'il lancera la commande « Ncooker pack » à nouveau, elle procédera de
la
manière suivante :
* elle récupère la première ligne du changelog commençant par %
* Si la ligne contient déjà des infos :
- elle vérifie que le numéro de release indiqué correspond à la valeur de
NPKG_RELEASE du fichier infos, sinon erreur : le fichier changelog n'a pas
été mis à jour pour le nouveau numéro de release
- elle vérifie que l'auteur indiqué correspond à la valeur de NC_PKG_AUTHOR
du
fichier Ncooker.conf, sinon erreur : la dernière entrée du changelog n'a
pas
été faite par l'auteur de la nouvelle release, ce qui signifie probablement
que le numéro de release n'a pas été incrémenté et le changelog pas mis à
jour
- elle compare la date de modification du fichier changelog avec le champ
<date> de la ligne % .... Si elle est supérieure, <date> est mise à jour
dans
le fichier.
Que se passe-t-il si je commence le développement d'un Nbuild puis je le
passe à un autre développeur afin qu'il le fignole. Je ferai un "Ncooker
pack" puis lui enverrai par e-mail. Il voudra reprendre le nbuild mais la
vérification sur l'auteur retournera une erreur. Est-ce gênant ?
Pour assurer une « certaine » cohérence au fichier changelog, la commande
« Ncooker check » ferait les vérifications suivantes :
* Dans le cas où elle vérifie un répertoire de travail pour créer un nbuild
:
- vérifier que seule la première ligne du fichier commençant par % soit
éventuellement vide
- vérifier que les autres lignes commençant par % possède bien les infos
voulues.
- vérifier que les lignes successives commençant par % ont des versions de
paquets dans l'ordre décroissant
- vérifier qu'aucune entrée du changelog est vide
* Dans le cas où elle vérifie un paquet NBUILD :
- vérifier que toutes les lignes commençant par % possède bien les infos
voulues.
- vérifier que les lignes successives commençant par % ont des versions de
paquets dans l'ordre décroissant
- vérifier qu'aucune entrée du changelog est vide
Voilà
je pense que ce principe simplifie la création du changelog tout en le
gardant
cohérent. La seule chose dont le nbuilder doit se préoccuper est le texte
décrivant ses modifications. Les autres informations sont gérées de manière
transparente. En fait, (presque) tout le travail est dans les mains de
Ncooker au lieu de celles du Nbuilder :^)
C'est vrai que le principe est plutôt sympa. ;)
Gontran
--
Julien
_________________________________________________________________
Ne cherchez plus, trouvez ! Avec le nouveau MSN Search.
http://search.msn.fr/