This is an old revision of the document!
Table of Contents
Je commite en 9 leçons ou comment faire un bon commit
Quand on essaie de faire des commits, on oublie toujours une chose ou l'autre quand on n'a pas l'habitude (pas comme Romain ou Luc qui sont des vrais pros). Voici donc une petite marche à suivre qui détaille, étape par étape, tout ce qu'il faut faire pour faire un beau commit pas foireux
Avant de commiter, il est indispensable de vérifier que les nouveaux développement sont portable (via compilation sur différentes plateformes et compilateurs) et qu'il n'y a pas de régression dans les capacités de Metafor (via l'execution de la batterie sur différentes configurations).
Le présent document présente pas à pas la procédure de menant à un commit réussi …
Attention, depuis un (des nombreux ) commit de réorganisation de notre cher Luc, un troisième dossier mtStart a été créé, en plus des existants oo_meta et oo_nda. Ce dossier aussi doit être updaté, transféré sur stations, … Si quelqu'un s'ennuie un vendredi aprem, il faudrait mettre la page et les captures d'écran à jour.
00. Plateformes de test
Rappel des plateformes de tests de la batterie :
OS | compiler | nb core | Bacon | GUI | Battery | Nice value | Fichier CMake | |
---|---|---|---|---|---|---|---|---|
thorgal | Linux64 | gcc | 2*4 | oui | oui | oui | 19 | thorgal.cmake |
blueberry | Linux64 | icc | 4 | oui | oui | oui | 19 | blueberry.cmake |
PC Windows | Win64 | VS2012 | - | oui | oui | oui | - | win64-vs2012.cmake |
0. Hypothèses de départ
- On considère que les sources stations vont être dans
/home/$USER/Metafor
- (Optionnel) Il faut aussi savoir se connecter sur les stations sans mot de passe. Pour ce faire, suivez les instructions décrites ici.
- Enfin, les programmes suivants (disponibles sur le ftp clifton) doivent être installés sur son PC:
- Samcef (normalement inclus dans les libs-vs2012)
- Matlab
1. Mise à jour complète
Bien mettre à jour les sources et compiler son projet (CMake), attention à bien updater aussi les fichiers oo_nda
et mtStart
:
Avec TortoirseSVN, svn update
des 3 dossiers de Metafor (mtStart
, oo_meta
, oo_nda
).
Avant de transférer sur les stations, taper “python chkrep.py format > out.html” dans le dossieroo_meta
. Vérifier que vous n'introduisez pas de bugs supplémentaires.
2. Transférer les sources sur les stations
- Dans
MetaBin\bin\Release
:python battery.py clean
pour nettoyer les vieilles crasses de la batteries - Dans
oo_meta
fairepython clean.pyw
pour nettoyer les crasses du projet. Cela n'est pas obligatoire, mais cela permet de supprimer les .pyc par exemple, pour éviter par la suite de commiter des fichiers qui ne doivent pas l'être. Attention qu'il ne faut pas aveuglément cliquer sur Go et tout supprimer, il me semble que cela supprimer parfois des fichiers requis par certains cas-tests (à vérifier…) - Enfin, il est également bon de faire un SVN Clean Up de oo_meta, oo_nda et mtStart, sans quoi les dossiers pourraient être trop gros pour être zippés correctement. Les options par défaut peuvent être laissées, attention de ne pas cocher “Delete unversioned files and folders”, “Delete ignored files and folders” et “Revert all changes recursively”.
- On zippe les sources : avec WinRar, faire un fichier qui peut s'appeler, par example,
oomDate.zip
(attention, pas un fichier.rar
) avec les trois dossiersmtStart
,oo_meta
etoo_nda
-
- Se connecter à blueberry & thorgal ($USER@blueberry.ltas.ulg.ac.be)
- Copier le fichier
oomDate.zip
dans/home/$USER
.
3. Faire passer la batterie sur son PC Windows
- Dans l'invite de commandes, on se met dans le répertoire
Metafor\Meta\MetaBin\bin\Release
et on tape
python battery.py -j 2 (ou 3,4,etc...) -l
- Vérifier avec Araxis Merge les différences dans les fichiers STP, ITE, INW, EXW et EXT de
oo_meta/apps/verif/*-Windows.txt
: générer un fichier html de diffs par la commandepython battery.py verif
puispython battery.py diff
et ouvrir le fichierWindows-diff.html
qui a été créé dansMetaBin\bin\Release
pour examiner les différences.
- Petit conseil (très utile si on ne sait pas d'où viennent les diffs): avoir deux versions de Metafor sur le PC:
- Une version officielle à laquelle on ne touche pas et la version de développement.
- On lance une batterie avec la version officielle et une avec la version de développement.
- On compare les résultats de ces deux batteries et aussi avec ceux du Repository. Ca permet de détecter les diffs à prendre en compte et celles qui ne sont pas graves (si pas de diff entre offi et dev, on peut commiter)
4. Faire passer les batteries sur les stations
Pendant qu'on fait passer la batterie sur son PC, on lance la batterie sur les stations. Pour cela, il faut compiler les sources et lancer la batterie sur lesdites stations, i.e. sous Linux64-gcc (thorgal) et Linux64-icc (blueberry).
- On se connecte sur les stations via PuTTY.
- On va dans /home/$USER/Metafor:
cd /home/$USER/Metafor
- On tape la commande
top
pour voir si personne n'est occupé sur la machine.
- A partir du répertoire
/home/$USER/Metafor/
, on lance le (magnifique) script de Romaincomp.py
. Pour faire son choix dans le menu, il suffit de taper la lettre ou le chiffre précédant la commande en question dans le menu.
- b. Nombre de CPU pour la compilation et la batterie (voir tableau ci-dessous pour le nombre de CPU des différentes machines).
- c. e-mail address. C'est clair non?
- d. is bacon present? Bacon est présent sur toutes les machines.
- h. build options. Donner le nom du fichier de config CMake (voir tableau ci-dessous).
- i. debug mode. Laisser
False
- j. nice value. Priorité de calcul pour la batterie (voir tableau ci-dessous).
- k. svn Repository. Chemin du Repository de Metafor. Il se trouve dans
svn+ssh://clifton.ltas.ulg.ac.be/home/metafor/SVN/oo_meta/trunk
- 1. Les sources sont zippées, présentes ou doivent être checkoutées. Ici, elles sont zippées
zip
. Pour indiquer au script où se trouve les sources zippées, on tapea
et on rentre le chemin des sources. - 2. compile
True
ouFalse
- 3. battery
True
,False
oucontinue
. La troisième option permet de ne relancer que les cas tests de la batteries qui n'ont pas encore tourné ou qui ne sont pas passés. - 4. installer
False
- G. Lancer le script en interactif (à ne jamais faire, sauf cas très particuliers!).
- B. Lancer le script en batch. A utiliser si on lance une batterie la nuit sinon on prend toutes les ressources des stations et en plus si on perd la connection, on perd toute une nuit pour rien!
- S. Sauve la configuration courante.
- Q. Quitter le script
- Se connecter sur la station suivante (
ssh blueberry
oussh thorgal
) - Les fichiers de résultats de la batterie sont envoyés automatiquement par email. On recevra notamment un mail avec un fichier html reprenant les diff sur la machine analogue à celui obtenu pour les résultats de la batterie sur son pc
- Voici le tableau qui permet de choisir les paramètres pour configurer
comp.py
OS | compiler | nb core | Bacon | GUI | Battery | Nice value | Fichier CMake | |
---|---|---|---|---|---|---|---|---|
thorgal | Linux64 | gcc | 2*4 | oui | oui | oui | 19 | thorgal.cmake |
blueberry | Linux64 | icc | 4 | oui | oui | oui | 19 | blueberry.cmake |
PC Windows | Win64 | VS2012 | - | oui | oui | oui | - | win64-vs2012.cmake |
- Si vous n'aimez pas utiliser le (magnifique) script de Romain, vous pouvez toujours faire tout ça à la main
5. Une fois que la batterie est passée...
- Comme on utilise le (magnifique) script de Romain, on a reçu un mail avec un fichier html reprenant les diff sur les différences stations. On peut donc analyser les diffs sur les stations et sur son PC.
- Si on a des diffs sur une des trois machines, on répète les étapes 2, 3 et 4 jusqu'à ce qu'on ait plus de diffs ou alors seulement des diffs qu'on peut expliquer sur les différentes machines…
- On peut aussi faire les diff "à la main"
- Si on a des diffs uniquement sur un ou deux fichiers, il est possible de relancer uniquement la battery sur ceux-ci :
- On se place dans
USER/Metafor/Meta_B/bin/apps/(dossier du cas test)
- On supprime le
.res
concerné - On relance
comp.py
depuisUSER/Metafor/
avec les options “Sources présentes”, “Pas de compilation” et “Continuer la batterie”.
6. Le commit proprement dit
Le moment tant attendu arrive enfin: on commite!!!
- Dans le répertoire
oo_meta
, on nettoie ses crasses:python clean.pyw
- Si on n'est vraiment pas sûr de soi, on peut faire un zip du Repository pour eviter les couilles (mais ce n'est pas obligatoire)… On va par exemple sur thorgal avec PuTTy et on tape:
cd /accounts/$USER tar -cvzf Metafor_date.tar /accounts/metafor/SVN
- On parcourt l'ensemble des fichiers modifiés pour écrire proprement sa page de commit
- Dans TortoiseSVN, on clique droit successivement sur
oo_meta
etoo_nda
, puis on va sur “Tortoise SVN” et sur “Check for modifications”. Dans la fenêtre qui s'ouvre, on coche “show unversioned files” et “show ignored files”.
- Sur les stations, on se connecte avec PuTTy et on tape
- sur blueberry:
cd /home/$USER/Metafor/oo_meta/apps/verif svn commit *Linux64-icc.txt
L'éditeur de texte vi vi Tutorial se lance dans l'invite de commande. Si on ne désire pas ajouter de commentaires supplémentaires dans le fichier texte ouvert, on tape
:wq
c'est-à-dire “write” et “quit”.
Ensuite, il suffit de choisir l'option “continue”, c'est-à-dire taper “c”, et d'insérer son mot de passe “svn” pour effectuer le commit.
Log message unchanged or not specified (a)bort, (c)ontinue, (e)dit :
c Password: Sending CPU-Linux64-icc.txt Sending EXT-Linux64-icc.txt Sending EXW-Linux64-icc.txt Sending INW-Linux64-icc.txt Sending ITE-Linux64-icc.txt Sending LKS-Linux64-icc.txt Sending MEM-Linux64-icc.txt Sending STP-Linux64-icc.txt Transmitting file data ........ Committed revision 1677.
- sur thorgal:
cd /home/$USER/Metafor/oo_meta/apps/verif svn commit *Linux64-gcc.txt
L'éditeur de texte vi
vi Tutorial se lance dans l'invite de commande. Si on ne désire pas ajouter de commentaires supplémentaires dans le fichier texte ouvert, on tape
:wq
c'est-à-dire “write” et “quit”.
Ensuite, il suffit de choisir l'option “continue”, c'est-à-dire taper “c”, et d'insérer son mot de passe “svn” pour effectuer le commit.
Log message unchanged or not specified (a)bort, (c)ontinue, (e)dit :
c Password: Sending CPU-Linux64-gcc.txt Sending EXT-Linux64-gcc.txt Sending EXW-Linux64-gcc.txt Sending INW-Linux64-gcc.txt Sending ITE-Linux64-gcc.txt Sending LKS-Linux64-gcc.txt Sending MEM-Linux64-gcc.txt Sending STP-Linux64-gcc.txt Transmitting file data ........ Committed revision 1676.
7. Vérifications
A présent, le commit est supposé terminé, les étapes suivantes sont de la vérification.
- Sur PC : refaire un checkout des sources, puis recompiler le projet (ou mettre à jour sa version officielle et la recompiler). Puis on lance
apps.qs.cont2
pour voir si tout va bien.
8. Informer les autres
- Mettre le site à jour: c-à-d écrire sa page de commit sur le Wiki et mettre à jour la liste des commits
- Envoyer 1 mail au groupe Google du service.
- Mettre à jour l'image d'évolution du temps CPU de la batterie sur le site (obligatoire si on a ajouté des nouveaux cas-tests): dans
oo_meta
:- Si on n'a pas matplotlib:
python stats.py -plot sum apps/verif/CPU-Linux64.txt
- Si on a matplotlib:
python stats.py -matplot sum apps/verif/CPU-Linux64.txt
- Copier l'image et la mettre sur le site en remplacement de l'ancienne