commit:memocommit
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
commit:memocommit [2016/04/07 11:56] – hennuyer | commit:memocommit [2018/05/04 15:49] (current) – ↷ Links adapted because of a move operation boman | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Je commite en 9 leçons ====== | ||
+ | ... ou comment faire un bon commit | ||
- | ===== Je commite en 9 leçons ou comment faire un bon commit ===== | + | ==== Avertissement |
- | Quand on essaie de faire des commits, on oublie toujours une chose ou l'autre quand on n'a pas l' | + | Cette page, explique aux développeurs comment |
- | 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' | + | Cependant, n'oublie |
- | Le présent document présente pas à pas la procédure de menant à un commit | + | Je te souhaite donc un bon commit! |
- | Attention, depuis un (des nombreux :-P ) 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' | + | ==== Introduction ==== |
- | ==== 00. Plateformes | + | [[https:// |
- | Rappel des plateformes | + | En effet, lorsque l'on est plusieurs à travailler sur le même code, il est indispensable d’utiliser un système |
- | | | + | Cependant, il ne suffit pas de brutalement aller modifier la version officielle! Avant de pouvoir commiter, il faut vérifier |
- | ^ thorgal | + | * que les nouveaux développements sont portables, en compilant sur différentes plateformes et compilateurs |
- | ^ blueberry | Linux64 | icc | + | |
- | ^ PC Windows | Win64 | | + | |
+ | Les différentes plateformes sur lesquelles la compilation doit être possible et la batterie lancée sont les suivantes : | ||
+ | |||
+ | | ^ | ||
+ | ^ thorgal | ||
+ | ^ spring | ||
+ | ^ gaston | ||
+ | ^ PC Windows | Win64 | | ||
+ | |||
+ | Quand on essaie de réaliser cette procédure de commit, on oublie toujours une chose ou l' | ||
==== 0. Hypothèses de départ ==== | ==== 0. Hypothèses de départ ==== | ||
* On considère que les sources stations vont être dans ''/ | * On considère que les sources stations vont être dans ''/ | ||
- | + | | |
- | | + | * Idéalement, |
- | + | * Les programmes suivants (disponibles sur le NAS) doivent être installés sur son PC: | |
- | * (Optionnel) Il faut aussi savoir se connecter sur les stations sans mot de passe. Pour ce faire, suivez les instructions [[devel: | + | |
- | + | ||
- | * Enfin, les programmes suivants (disponibles sur le ftp clifton) doivent être installés sur son PC: | + | |
* Samcef (normalement inclus dans les libs-vs2012) | * Samcef (normalement inclus dans les libs-vs2012) | ||
* Matlab | * Matlab | ||
+ | * Scilab | ||
+ | * GhostScript (dans les libs) | ||
+ | * Sous Windows, les chemins complets vers ces programmes doivent être définis à travers l' | ||
==== 1. Mise à jour complète ==== | ==== 1. Mise à jour complète ==== | ||
- | Bien mettre | + | Pour pouvoir commiter sa nouvelle version, il faut évidemment être à jour et posséder la version la plus récente de Metafor. A l' |
- | Avec TortoirseSVN, '' | + | |
- | {{ : | + | Les dossiers '' |
- | > :!: Avant de transférer | + | {{ :commit:svnupdate4.png? |
+ | |||
+ | Le dossiers '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | La fenêtre suivante s' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Lors de la mise à jour des sources, des conflits peuvent évidemment arriver, si jamais | ||
+ | |||
+ | Une fois les sources mises à jour, il faut faire de même avec son projet Windows, d' | ||
+ | |||
+ | {{ :commit: | ||
+ | |||
+ | On vérifie bien que la première ligne pointe vers '' | ||
==== 2. Transférer les sources sur les stations ==== | ==== 2. Transférer les sources sur les stations ==== | ||
- | * Dans '' | + | Une fois les sources à jour, l'idée est de les compiler et de lancer |
- | * Dans '' | + | |
- | * 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 " | + | |
- | * On zippe les sources | + | |
- | {{ : | + | |
- | * On transfère | + | |
- | * Se connecter à blueberry & thorgal (%%$USER@blueberry.ltas.ulg.ac.be%%) | + | |
- | * Copier le fichier '' | + | |
- | {{ : | + | === 2.1 Nettoyage === |
- | {{ : | + | |
- | * Si on n'aime pas [[http:// | + | Avant de déplacer les sources, deux petites opérations de nettoyage |
+ | * Premièrement, | ||
+ | * Deuxièmement, | ||
+ | === 2.2 Archivage === | ||
+ | Une fois le nettoyage réalisé, on peut zipper les sources avec [[http:// | ||
- | ==== 3. Faire passer la batterie sur son PC Windows ==== | + | {{ : |
- | * Dans l' | + | === 2.3 Transfert === |
- | < | + | |
+ | Ensuite, on transfère l' | ||
+ | * Hôte : '' | ||
+ | * Compléter identifiant et mot de passe | ||
+ | * Port: 22 | ||
+ | * Cliquer sur " | ||
- | {{ : | + | Une fois connecté, il suffit alors de faire glisser l' |
- | * Vérifier avec [[http:// | + | {{ :commit:filezilla2.png? |
- | * 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). | + | ==== 3. Faire passer |
- | * On se connecte sur les stations via [[http:// | + | |
- | {{ : | + | |
- | * On va dans / | + | |
- | < | + | |
- | * On tape la commande '' | + | |
- | {{ : | + | |
- | * A partir du répertoire ''/ | + | |
- | * a. Archive name. Chemin et nom des sources zippées de Metafor. Ainsi, si on tape '' | + | |
- | * 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 '' | + | |
- | * 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 < | + | |
- | * 1. Les sources sont zippées, présentes ou doivent être checkoutées. Ici, elles sont zippées '' | + | |
- | * 2. compile '' | + | |
- | | + | |
- | * 4. installer '' | + | |
- | * 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 | + | |
- | * S. Sauve la configuration courante. | + | |
- | * Q. Quitter le script | + | |
- | * Se connecter sur la station suivante ('' | + | |
- | * 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 à [[memocommit# | + | |
- | * Voici le tableau qui permet de choisir les paramètres pour configurer '' | + | |
- | | | + | Maintenant qu'on a déplacé les sources sur les stations, il reste à lancer les batteries dessus. Pour cela, il faut compiler |
- | ^ thorgal | + | |
- | ^ blueberry | | + | |
- | ^ PC Windows | Win64 | | + | |
- | * Si vous n' | + | === 3.1 Se connecter sur les stations |
- | ==== 5. Une fois que la batterie est passée... ==== | + | |
- | | + | On se connecte sur les stations grâce à [[http:// |
- | * Si on a des diffs sur une des trois machines, on répète | + | |
- | * On peut aussi faire les [[diff | + | * Dans port, 22 |
- | * Si on a des diffs uniquement | + | * On clique " |
- | * On se place dans '' | + | * On tape son identifiant, |
- | * On supprime | + | * On se positionne dans le bon dossier : '' |
- | * On relance | + | |
+ | {{ : | ||
+ | |||
+ | Une fois connecté, on commence par taper la commande '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === 3.2 Lancer les batteries via '' | ||
+ | |||
+ | Si personne n'est sur la machine, on lance alors le script '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Parmi les lettres, seules les options ' | ||
+ | * b. Archive name. Chemin et nom des sources zippées de Metafor. Il faut donc taper b, puis écrire le chemin vers l' | ||
+ | * j. Nombre de CPUs pour la compilation et la batterie (voir tableau ci-dessous pour le nombre de CPU des différentes machines). Mettre généralement à 4. | ||
+ | |||
+ | Les autres options, décrites ci-dessous, sont en général laissées par défaut : | ||
+ | * a. e-mail address. Adresse à laquelle les résultats de la batterie seront renvoyés. | ||
+ | * f. build options. Donner le nom du fichier de config CMake (voir tableau ci-dessous - le nom par défaut est généralement OK). | ||
+ | * g. debug mode. Laisser '' | ||
+ | * h. nice value. Priorité de calcul pour la batterie: laisser 0 - priorité haute. | ||
+ | * k. Nombre de threads pour le calcul en parallèle. | ||
+ | * m. run Method. Laisser " | ||
+ | * q. is bacon present? Bacon est présent sur toutes les machines de batterie. | ||
+ | |||
+ | Concernant les chiffres : | ||
+ | |||
+ | * 1. Indique où sont les sources. Trois possibilités : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | * 2. compile: '' | ||
+ | |||
+ | * 3. battery: '' | ||
+ | |||
+ | * 4. installer: '' | ||
+ | |||
+ | Dans ce cas-ci, où on vient de transférer les sources par Filezilla, on veut avoir : | ||
+ | * 1 source - zip | ||
+ | * 2 compile - True | ||
+ | * 3 battery - True | ||
+ | |||
+ | Une fois qu'on est satisfaits avec les options, on appuie sur " | ||
+ | |||
+ | * G. Lancer le script | ||
+ | * S. Sauve la configuration courante. | ||
+ | * Q. Quitter le script | ||
+ | |||
+ | On répète ensuite l' | ||
+ | |||
+ | Une dizaine | ||
+ | |||
+ | Si la compilation s'est bien passée, quelques heures plus tard, les fichiers de résultats de la batterie sont envoyés automatiquement par email. On recevra notamment | ||
+ | |||
+ | |||
+ | ==== 4. Faire passer la batterie sur son PC Windows ==== | ||
+ | |||
+ | Les batteries tournent déjà sur spring, thorgal et gaston, pour vérifier la portabilité sous Linux. Sous Windows, malheureusement, | ||
+ | |||
+ | Dans '' | ||
+ | |||
+ | Toujours dans la fenêtre de commande, on tape à présent '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Une fois la batterie finie, toujours dans l' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== 5. Obtenir des résultats de batterie satisfaisants ==== | ||
+ | |||
+ | === 5.1 Analyse des résultats de batterie === | ||
+ | |||
+ | A présent, on a donc lancé les batteries | ||
+ | |||
+ | Première chose à regarder : les " | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Deuxième chose à regarder, le rouge! Un résultat est affiché en rouge si la donnée que l'on est censé observé est manquante. Il y a deux cas possibles : | ||
+ | | ||
+ | * Par contre, si le '' | ||
+ | * Soit le test correspondant est également dans la section | ||
+ | * Soit le test correspondant n'est pas dans les failed, mais l' | ||
+ | * Enfin, le test n'est toujours pas dans les failed, mais l' | ||
+ | |||
+ | Troisième chose à regarder, les diffs proprement dites. Une fois qu' | ||
+ | |||
+ | Quelques conseils: | ||
+ | * La première série, " | ||
+ | * Deuxième série, | ||
+ | * Troisième, " | ||
+ | * Quatre, " | ||
+ | * Cinq, " | ||
+ | * Six, " | ||
+ | * Sept, " | ||
+ | * Huit, " | ||
+ | |||
+ | Il faut noter qu'il y a des tests qui sont connus pour être instables. Il est assez fréquent que, les tests " | ||
+ | |||
+ | === 5.2 Relancer certains tests === | ||
+ | |||
+ | Très souvent, on n'est pas prêt à commiter du premier coup. Que faire donc si la batterie n'est pas bonne? Cela dépend de si le code source de Metafor a dû être modifié. Si oui, alors on doit relancer toutes les batteries. Oui, toutes ! On recommence donc à l' | ||
+ | |||
+ | Si par contre les erreurs proviennent des tests eux-mêmes (donc que l'on a modifié les tests mais pas le code source), il suffit alors de relancer juste les tests en question. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Sur les stations. Plusieurs façons de faire, j'en présente une qui me semble la plus simple: | ||
+ | * Transférer via Filezilla les différents tests qui ont été modifiés. | ||
+ | * Toujours via Filezilla, | ||
+ | * Via Putty, dans le dossier | ||
+ | * 1 source : present (elles sont déjà ici vu qu'on a déjà compilé et lancé une batterie précédemment) | ||
+ | * 2 compile : false (sinon on efface tout Metafor et les résultats de batterie) | ||
+ | * 3 battery : continue (ne relance que les tests qui n'ont pas de .res) | ||
+ | |||
+ | Une fois que les quelques tests ont tourné, on reçoit par email un nouveau fichier diff que l'on peut analyser. | ||
+ | |||
+ | Sur le PC. On suit la même logique, une fois les tests modifiés, on supprime | ||
+ | |||
+ | Cette étape est à répéter jusqu' | ||
==== 6. Le commit proprement dit ==== | ==== 6. Le commit proprement dit ==== | ||
- | Le moment tant attendu arrive enfin: on commite!!! | ||
- | * Dans le répertoire '' | ||
- | * 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 [[http:// | ||
- | tar -cvzf Metafor_date.tar / | ||
- | * On parcourt l' | ||
- | * Dans TortoiseSVN, | ||
- | * Avec les " | ||
- | * On se met dans oo_meta/ | ||
- | * Sur les stations, on se connecte avec [[http:// | + | Le moment tant attendu arrive enfin: on commite ! |
- | * sur __**blueberry**__:< | + | |
+ | === 6.1 Commiter sur son PC === | ||
+ | |||
+ | D' | ||
+ | |||
+ | < | ||
+ | |||
+ | Ensuite, on clique droit successivement sur '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Concernant | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ensuite, on clique droit sur oo_meta, oo_nda (seulement ceux où des modifications doivent être commitées) et on clique sur "SVN commit" | ||
+ | |||
+ | === 6.2 Commiter sur spring | ||
+ | |||
+ | On se connecte avec [[http:// | ||
+ | < | ||
+ | cd / | ||
svn commit *Linux64-icc.txt | svn commit *Linux64-icc.txt | ||
</ | </ | ||
Line 162: | Line 292: | ||
</ | </ | ||
- | * sur __**thorgal**__:< | + | === 6.3 Commiter |
- | svn commit *Linux64-gcc.txt | + | |
- | </ | + | |
- | L'éditeur de texte '' | + | Faire la même chose sur thorgal ('' |
- | < | + | |
- | :wq | + | |
- | </ | + | |
- | c'est-à-dire " | + | |
- | Ensuite, il suffit de choisir l' | ||
- | < | ||
- | Log message unchanged or not specified | ||
- | (a)bort, (c)ontinue, (e)dit : | ||
- | </ | ||
- | < | + | ==== 7. Vérifications ==== |
- | c | + | |
- | Password: | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | Sending | + | |
- | 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. | 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 '' | + | * Sur PC : refaire un checkout des sources, puis recompiler le projet (ou mettre à jour sa version officielle et la recompiler). Puis on lance par exemple |
- | * Sur les stations, on fait un check out des sources et on recompile les sources avec comp.py:{{ : | + | * Sur les stations, on fait un checkout |
+ | * 1 source - checkout | ||
+ | * 2 compile | ||
+ | * 3 battery - False | ||
<note important> | <note important> | ||
+ | {{ : | ||
==== 8. Informer les autres ==== | ==== 8. Informer les autres ==== | ||
- | * Mettre | + | |
- | * Envoyer 1 mail au [[https:// | + | Une fois que le commit |
- | * Mettre | + | |
+ | Si par contre on se rend compte qu'on a fait une boulette, on prend son courage à deux mains, on fait ses adieux à ses proches, on met son armure et on va trouver Luc... | ||
+ | |||
+ | En théorie, il faut ensuite mettre | ||
* Si on n'a pas [[http:// | * Si on n'a pas [[http:// | ||
* Si on a matplotlib: < | * Si on a matplotlib: < | ||
* Copier l' | * Copier l' | ||
- | |||
- | |||
==== 9. Fêter ça ==== | ==== 9. Fêter ça ==== | ||
- | * Amener de la tarte ou du gâteau pour fêter son commit réussi. | ||
- | {{ : | + | Amener de la tarte ou du gâteau pour fêter son commit réussi. Malheureusement, |
+ | |||
+ | {{ : |
commit/memocommit.txt · Last modified: 2018/05/04 15:49 by boman