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/


Répondre à