commit:memocommit
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
commit:memocommit [2016/09/15 09:10] – [6. Le commit proprement dit] boman | commit:memocommit [2017/12/20 11:44] – [7. Vérifications] boemer | ||
---|---|---|---|
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 ==== | ==== Avertissement ==== | ||
- | Cette page, la plus visitée du beau site de Metafor, explique aux développeurs comment faire un bon commit. Cependant, vu l' | + | Cette page, explique aux développeurs comment faire un bon commit. Cependant, vu l' |
- | J'ai donc, en date du __**15/ | + | Cependant, n'oublie pas, cher collègue, que tu peux aussi faire de ce monde un monde meilleur! Il te suffit de cliquer à droite de cette page sur le bouton "Edit this page" et tu peux immédiatement corriger une erreur! Merveilleux, n'est-il pas? |
- | Cependant, n' | + | Je te souhaite donc un bon commit! |
- | + | ||
- | Je te souhaite donc un bon commit ! | + | |
==== Introduction ==== | ==== Introduction ==== | ||
Line 15: | Line 14: | ||
[[https:// | [[https:// | ||
- | En effet, lorsque l'on est plusieurs à travailler sur le même code, il est indispensable d’utiliser un système de version. La version officielle de Metafor se trouve bien sagement dans le " | + | En effet, lorsque l'on est plusieurs à travailler sur le même code, il est indispensable d’utiliser un système de version. La version officielle de Metafor se trouve bien sagement dans le " |
- | Cependant, il ne suffit pas de brutalement aller modifier la version officielle ! Avant de pouvoir commiter, il faut vérifier | + | Cependant, il ne suffit pas de brutalement aller modifier la version officielle! Avant de pouvoir commiter, il faut vérifier |
* que les nouveaux développements sont portables, en compilant sur différentes plateformes et compilateurs | * que les nouveaux développements sont portables, en compilant sur différentes plateformes et compilateurs | ||
- | * qu'il n'y a pas de régression dans les capacités de Metafor (c' | + | * qu'il n'y a pas de régression dans les capacités de Metafor (c' |
Les différentes plateformes sur lesquelles la compilation doit être possible et la batterie lancée sont les suivantes : | Les différentes plateformes sur lesquelles la compilation doit être possible et la batterie lancée sont les suivantes : | ||
- | | | + | | ^ |
- | ^ thorgal | + | ^ thorgal |
- | ^ blueberry | + | ^ spring |
- | ^ gaston | Linux64 | clang | + | ^ gaston |
- | ^ PC Windows | Win64 | | + | ^ PC Windows | Win64 | |
Quand on essaie de réaliser cette procédure de commit, on oublie toujours une chose ou l' | Quand on essaie de réaliser cette procédure de commit, on oublie toujours une chose ou l' | ||
Line 34: | Line 33: | ||
* On considère que les sources stations vont être dans ''/ | * On considère que les sources stations vont être dans ''/ | ||
- | + | | |
- | | + | |
* Idéalement, | * Idéalement, | ||
- | |||
* Les programmes suivants (disponibles sur le NAS) doivent être installés sur son PC: | * Les programmes suivants (disponibles sur le NAS) doivent être installés sur son PC: | ||
* Samcef (normalement inclus dans les libs-vs2012) | * Samcef (normalement inclus dans les libs-vs2012) | ||
Line 44: | Line 40: | ||
* Scilab | * Scilab | ||
* GhostScript (dans les libs) | * GhostScript (dans les libs) | ||
- | + | | |
- | | + | |
==== 1. Mise à jour complète ==== | ==== 1. Mise à jour complète ==== | ||
- | Personnellement, | + | Pour pouvoir commiter sa nouvelle version, il faut évidemment être à jour et posséder la version la plus récente de Metafor. A l' |
- | Les trois dossiers '' | + | Les dossiers '' |
- | {{: | + | {{ : |
- | Le dossier | + | Le dossiers |
- | {{: | + | {{ : |
- | La fenêtre suivante s' | + | La fenêtre suivante s' |
- | {{: | + | {{ : |
Lors de la mise à jour des sources, des conflits peuvent évidemment arriver, si jamais les modifications réalisées ne sont pas compatibles avec celles introduites dans les derniers développements commités par les collègues. Dans ce cas-là il faut résoudre les conflits à la main. Plus on attend longtemps avant de commiter, plus le nombre de ces conflits augmente, donc il est intéressant de commiter régulièrement. | Lors de la mise à jour des sources, des conflits peuvent évidemment arriver, si jamais les modifications réalisées ne sont pas compatibles avec celles introduites dans les derniers développements commités par les collègues. Dans ce cas-là il faut résoudre les conflits à la main. Plus on attend longtemps avant de commiter, plus le nombre de ces conflits augmente, donc il est intéressant de commiter régulièrement. | ||
- | Une fois les sources mises à jour, il faut faire de même avec son projet Windows, d' | + | Une fois les sources mises à jour, il faut faire de même avec son projet Windows, d' |
- | {{: | + | {{ : |
- | On vérifie bien que la première ligne pointe vers '' | + | 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 ==== | ||
- | Une fois les sources à jour, l' | + | Une fois les sources à jour, l' |
=== 2.1 Nettoyage === | === 2.1 Nettoyage === | ||
Line 80: | Line 75: | ||
Avant de déplacer les sources, deux petites opérations de nettoyage : | Avant de déplacer les sources, deux petites opérations de nettoyage : | ||
- | * Premièrement, | + | * Premièrement, |
- | * Deuxièmement, | + | * Deuxièmement, |
=== 2.2 Archivage === | === 2.2 Archivage === | ||
- | Une fois le nettoyage réalisé, on peut zipper les sources avec [[http:// | + | Une fois le nettoyage réalisé, on peut zipper les sources avec [[http:// |
- | {{ : | + | {{ : |
=== 2.3 Transfert === | === 2.3 Transfert === | ||
Ensuite, on transfère l' | Ensuite, on transfère l' | ||
- | * Hôte : '' | + | * Hôte : '' |
* Compléter identifiant et mot de passe | * Compléter identifiant et mot de passe | ||
- | * Port 22 | + | * Port: 22 |
- | * Cliquer sur connexion rapide | + | * Cliquer sur "connexion rapide" |
Une fois connecté, il suffit alors de faire glisser l' | Une fois connecté, il suffit alors de faire glisser l' | ||
- | {{ : | + | {{ : |
==== 3. Faire passer les batteries sur les stations ==== | ==== 3. Faire passer les batteries sur les stations ==== | ||
- | Maintenant qu'on a déplacé les sources sur les stations, il reste à lancer les batteries dessus. Pour cela, il faut compiler les sources et lancer la batterie sous Linux64-gcc (thorgal) | + | Maintenant qu'on a déplacé les sources sur les stations, il reste à lancer les batteries dessus. Pour cela, il faut compiler les sources et lancer la batterie sous Linux64-gcc (thorgal), Linux64-icc (spring) et Linux64-clang (gaston). |
=== 3.1 Se connecter sur les stations === | === 3.1 Se connecter sur les stations === | ||
On se connecte sur les stations grâce à [[http:// | On se connecte sur les stations grâce à [[http:// | ||
- | * Dans hôte, on tape '' | + | * Dans hôte, on tape '' |
* Dans port, 22 | * Dans port, 22 | ||
- | * On clique Open | + | * On clique |
* On tape son identifiant, | * On tape son identifiant, | ||
* On se positionne dans le bon dossier : '' | * On se positionne dans le bon dossier : '' | ||
- | {{ : | + | {{ : |
- | Une fois connecté, on commence par taper la commande '' | + | Une fois connecté, on commence par taper la commande '' |
- | {{ : | + | |
+ | {{ : | ||
=== 3.2 Lancer les batteries via '' | === 3.2 Lancer les batteries via '' | ||
- | Si personne n'est sur la machine, on lance alors le (magnifique) | + | 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. | 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 ' | 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' | + | * 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 CPU pour la compilation et la batterie (voir tableau ci-dessous pour le nombre de CPU des différentes machines). Mettre à 4. | + | * j. Nombre de CPUs pour la compilation et la batterie (voir tableau ci-dessous pour le nombre de CPU des différentes machines). Mettre |
Les autres options, décrites ci-dessous, sont en général laissées par défaut : | 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. | * 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). | + | * f. build options. Donner le nom du fichier de config CMake (voir tableau ci-dessous |
* g. debug mode. Laisser '' | * g. debug mode. Laisser '' | ||
- | * h. nice value. Priorité de calcul pour la batterie. | + | * h. nice value. Priorité de calcul pour la batterie: laisser 0 - priorité haute. |
* k. Nombre de threads pour le calcul en parallèle. | * k. Nombre de threads pour le calcul en parallèle. | ||
- | * m. run Method. Laisser batch. | + | * m. run Method. Laisser |
- | * q. is bacon present? Bacon est présent sur toutes les machines. | + | * q. is bacon present? Bacon est présent sur toutes les machines |
Concernant les chiffres : | Concernant les chiffres : | ||
Line 144: | Line 140: | ||
* 1. Indique où sont les sources. Trois possibilités : | * 1. Indique où sont les sources. Trois possibilités : | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
- | * 2. compile. '' | + | * 2. compile: '' |
- | * 3. battery '' | + | * 3. battery: '' |
- | * 4. installer '' | + | * 4. installer: '' |
Dans ce cas-ci, où on vient de transférer les sources par Filezilla, on veut avoir : | Dans ce cas-ci, où on vient de transférer les sources par Filezilla, on veut avoir : | ||
Line 158: | Line 154: | ||
* 3 battery - True | * 3 battery - True | ||
- | Une fois qu'on est satisfaits avec les options, on appuie sur G et ça démarre ! Pour info : | + | Une fois qu'on est satisfaits avec les options, on appuie sur "G" |
* G. Lancer le script en batch. | * G. Lancer le script en batch. | ||
Line 164: | Line 160: | ||
* Q. Quitter le script | * Q. Quitter le script | ||
- | On répète ensuite l' | + | On répète ensuite l' |
Une dizaine de minutes plus tard, on reçoit un mail qui indique si la compilation s'est bien passée ou non. Si non, il faut donc comprendre pourquoi. Si ça compile sous Windows mais pas sous Linux, l' | Une dizaine de minutes plus tard, on reçoit un mail qui indique si la compilation s'est bien passée ou non. Si non, il faut donc comprendre pourquoi. Si ça compile sous Windows mais pas sous Linux, l' | ||
- | 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 un mail avec un fichier html reprenant les diff sur la machine, qu'il faudra ensuite analyser. | + | 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 un mail avec un fichier html reprenant les diffs sur la machine, qu'il faudra ensuite analyser. |
==== 4. Faire passer la batterie sur son PC Windows ==== | ==== 4. Faire passer la batterie sur son PC Windows ==== | ||
- | Les batteries tournent déjà sur Blueberry | + | |
+ | Les batteries tournent déjà sur spring, thorgal | ||
Dans '' | Dans '' | ||
Line 178: | Line 175: | ||
Toujours dans la fenêtre de commande, on tape à présent '' | Toujours dans la fenêtre de commande, on tape à présent '' | ||
| | ||
- | {{ : | + | {{ : |
- | Une fois la batterie finie, toujours dans l' | + | Une fois la batterie finie, toujours dans l' |
- | {{ : | + | |
+ | {{ : | ||
==== 5. Obtenir des résultats de batterie satisfaisants ==== | ==== 5. Obtenir des résultats de batterie satisfaisants ==== | ||
Line 187: | Line 185: | ||
=== 5.1 Analyse des résultats de batterie === | === 5.1 Analyse des résultats de batterie === | ||
- | A présent, on a donc lancé les batteries sur Thorgal, Blueberry, et son PC. On a donc reçu deux fichiers diffs par email, et le troisième se trouve dans '' | + | A présent, on a donc lancé les batteries sur thorgal, spring, gaston |
- | Première chose à regarder : les failed. C'est assez simple, tant que au moins un des trois fichiers de diff commence par la section ' | + | 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 : | + | 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 : |
* Si on a ajouté un nouveau test, il n' | * Si on a ajouté un nouveau test, il n' | ||
- | * Par contre, si le '' | + | * Par contre, si le '' |
* Soit le test correspondant est également dans la section des failed. Facile à comprendre, le test n'a pas pu tourner jusqu' | * Soit le test correspondant est également dans la section des failed. Facile à comprendre, le test n'a pas pu tourner jusqu' | ||
* Soit le test correspondant n'est pas dans les failed, mais l' | * Soit le test correspondant n'est pas dans les failed, mais l' | ||
* Enfin, le test n'est toujours 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'on n'a plus de tests dans les failed, et qu'on a compris tout ce qui est en rouge, on regarde les valeurs. C'est ici que c'est difficile, et que ça demande de l' | + | Troisième chose à regarder, les diffs proprement dites. Une fois qu'on n'a plus de tests dans les failed, et qu'on a compris tout ce qui est en rouge, on regarde les valeurs. C'est ici que c'est difficile, et que ça demande de l' |
+ | |||
+ | Quelques conseils: | ||
* La première série, " | * La première série, " | ||
* Deuxième série, " | * Deuxième série, " | ||
Line 210: | Line 210: | ||
* Huit, " | * Huit, " | ||
- | Il faut noter qu'il y a des tests qui sont connus pour être instables. Il est assez fréquent que, les tests " | + | 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 === | === 5.2 Relancer certains tests === | ||
Line 218: | Line 218: | ||
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. | 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> | + | <note important> |
- | Sur les stations. Plusieurs façons de faire, j'en présente une qui me semble la plus simple : | + | 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. | * Transférer via Filezilla les différents tests qui ont été modifiés. | ||
* Toujours via Filezilla, se rendre dans '' | * Toujours via Filezilla, se rendre dans '' | ||
Line 236: | Line 236: | ||
==== 6. Le commit proprement dit ==== | ==== 6. Le commit proprement dit ==== | ||
+ | |||
Le moment tant attendu arrive enfin: on commite ! | Le moment tant attendu arrive enfin: on commite ! | ||
=== 6.1 Commiter sur son PC === | === 6.1 Commiter sur son PC === | ||
- | D' | + | D' |
< | < | ||
- | Ensuite, on clique droit successivement sur '' | + | Ensuite, on clique droit successivement sur '' |
- | Concernant les " | + | {{ :commit:svncheck.png? |
- | Ensuite, on clique droit sur oo_meta, oo_nda et/ou linuxbin (seulement ceux où des modifications doivent être commitées) et on clique sur "SVN commit" | + | {{ :commit:svncheck2.png? |
- | === 6.2 Commiter sur blueberry | + | Concernant les " |
+ | |||
+ | {{ : | ||
+ | |||
+ | 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:// | On se connecte avec [[http:// | ||
Line 291: | Line 298: | ||
==== 7. Vérifications ==== | ==== 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 avec les options suivantes : | + | * Sur les stations, on fait un checkout |
* 1 source - checkout | * 1 source - checkout | ||
* 2 compile - True | * 2 compile - True | ||
Line 300: | Line 308: | ||
<note important> | <note important> | ||
- | {{ : | + | |
==== 8. Informer les autres ==== | ==== 8. Informer les autres ==== | ||
Line 315: | Line 323: | ||
==== 9. Fêter ça ==== | ==== 9. Fêter ça ==== | ||
- | Amener de la tarte ou du gâteau pour fêter son commit réussi. Malheureusement, | + | 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