J'ai passé quelques jours a modestement bricoler sur NxOS,
principalement du coté d'outils et utilitaires pour aider au
développement, et éviter les problèmes les plus fréquents que j'ai pu
voir avec des commits.
Tout d'abord, je vous présente http://nxt.natulte.net/nxos/merge/ .
C'est un panneau indicateur de l'état des branches de développement
par rapport au tronc principal. Il:
- Indique si 'devel' contient des modifications que vous n'avez pas
("crew/sam is lagging 11 changes."),
- Indique si votre dépot contient des modifications qui ne sont pas
dans devel, et les énumère avec liens vers la vue du diff (cliquer sur
le [+]),
- Et bien sur, si vous êtes synchronisés, il le dira aussi
("crew/dave is up to date.").
C'est un petit tableau de bord très utile pour voir si vous êtes à
jour par rapport au tronc de développement. Idéalement, il devrait
aussi indiquer si vous pouvez merger les nouvelles modifications de
devel sans causer de conflit, mais c'est un peu plus compliqué, donc
ce n'est pas encore fait. Le tableau de bord se met à jour
automagiquement dès que vous poussez des modifications sur votre dépot
sur http://ssl.natulte.net/nxos/ .
En parlant de modifications récentes à devel, l'autre ajout qui vous
intéresse est un script, 'scripts/configure_repos.py'. Il est à
exécuter à la racine de tous les clones locaux que vous avez, et va
ajouter quelques bricoles au .hg/hgrc du dépot. Principalement, il
ajoute trois scripts de pre-commit, qui controllent automatiquement
certains aspects des commits que vous faites, pour parer aux erreurs
et oublis fréquents:
- L'ajout espaces en fin de ligne, qui n'ajoutent que du ballast au
fichier (et qui apparaissent en rouge criard dans mon éditeur),
- La vérification des indications de copyright des fichiers (présence
d'un copyright au bon format, avec l'année en cours dans la liste des
années),
- La vérification des métadonnées associées au commit (la présence
d'un nom d'auteur correctement formaté, et la présence d'un message de
log).
En évitant ces quelques bricoles, l'historique du projet n'en sera que
plus propre et exploitable. Mercurial ne permettant pas d'exécuter
automatiquement du code arbitraire lors d'un clonage de dépot, il faut
que vous invoquiez ce script manuellement à chaque clone:
$ hg clone https://ssl.natulte.net/nxos/crew/dave
destination directory: dave
requesting all changes
adding changesets
adding manifests
adding file changes
added 565 changesets with 1512 changes to 332 files
updating working directory
153 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd dave
$ ./scripts/configure_repos.py
$
Avant de pouvoir exécuter ce script, il faudra bien sur le récupérer
depuis devel. Pour ceux qui n'ont pas encore eu à faire de merge dans
Mercurial, ca se passe comme ceci. En étant dans votre clone de
crew/votrenom:
$ hg fetch https://ssl.natulte.net/nxos/devel
pulling from https://ssl.natulte.net/nxos/devel
...
$
A ce stade, il y aura peut-être des erreurs, indiquant que des
fichiers sont en conflit. Si c'est le cas, il faut éditer les fichiers
en question, résoudre les conflits, puis commiter manuellement avec
`hg commit`.
Voila voila.
Sinon, je serai présent au Google Code Camp samedi prochain, et vu
comme c'est parti je risque de bricoler sur NxOS. Si vous voulez en
discuter de visu à ce moment là, n'hésitez pas! Si vous n'y êtes pas
inscrit, vous pouvez quand même venir, vous n'avez juste pas droit au
manger ;-).
- Dave