TP 1 - Grandes bases de code
Outils
Exercice: Pour chacun des outils mentionnés, lisez sa documentation et résumez son utilité.
Git
Vous pouvez exécuter git <subcommand> --help ou git help <subcommand> pour obtenir la documentation de la commande.
- git grep
- git log
- git blame
- git show
IDEs et interfaces web
Dans certains cas, des interfaces web et des IDEs peuvent donner accès aux informations contenues dans git. En raison de contraintes de performances, il est fréquent que les outils web soient bridés et moins informatifs que leurs versions en ligne de commande, et ne permettent pas de faire des filtres automatisés immédiats à écrire dans un terminal.
Conventions (en vrac)
Arborescence
- Les fichiers et dossiers commençant par un point sont généralement des fichiers de configurations d’outils.
doc(s)- La documentation ! - Contient parfois l’équivalent d’un \item \texttt{ARCHITECTURE.md} expliquant la logique de la base de code.test/- Les tests - peuvent être utiles pour comprendre l’utilisation théorique de certaines fonctions.third_party/- Code d’une source externe, en général à ne pas modifier.tools/- Outils utilisés pour le développementpo/oul18n/oui18n/- Traductionssrc/- Le code source proprement dit
CHANGELOG, Releases
Un fichier changelog (dans le repo, ou sur le site du projet) est un fichier répertoriant toutes les modifications majeures du code.
Les releases (sur la forge en général) donnent une information similaire.
Exercices
Clonez les dépôts suivants (pour vous éviter de télécharger plus de 20 Go de données sur vos machines,
nous avons déjà cloné tous les projets sauf Pandoc dans /data/tzimmermann/3TC37).
Pour pouvoir utiliser git dans ces dépôts sans avoir les droits d’écriture dans le dossier, lancez :
git config --global --add safe.directory "/data/*"
- ocaml
- inkscape
- gitlab
- firefox
- nextcloud
- pandoc
Documentez la manière dont vous avez répondu à ces questions avec les outils présentés plus haut
- Question Quel jour a été introduite la feature “List.is_empty” dans la lib d’ocaml ?
- Question Dans le code d’Inkscape, l’outil étoile permet de dessiner des étoiles à n branches. Où est le code calculant les coordonnées des points de celles-ci ?
- Question Dans le code de gitlab, trouver la fonction qui affiche la possibilité de grouper les jobs par Stage ou Group dependencies
- Question Quel commit a updaté Firefox de la MPL 1.1/GPL 2.0/LGPL 2.1 à la MPL 2.0 ?
- Question Quelle fonction envoie le message au serveur quand on clique sur “Enregistrer le message d’état” sur nextcloud ?
- Question Dans pandoc, quelle fonction sert à parser du markdown ?
Rendu 1
- Trouvez :
- 2 logiciels libres utilisant un langage de programmation / une technologie que vous maitrisez,
- 2 logiciels libres qui vous intéressent personnellement mais dans d’autres langages de programmation que les précédents (que vous maîtrisez ou non).
- Pour chacun, ouvrir une Merge Request avec pour titre le nom du projet dans le dépôt en remplissant le template. Pour cela
- Vérifiez au préalable que le projet n’est pas déjà dans le Grist du cours.
- Ajoutez une ligne avec le nom du projet et votre nom.
- Créez une branche dont le nom contient votre nom et le nom du projet. Votre commit doit contenir un dossier avec le nom du projet (en minuscules), qui contient le fichier suivant sous le nom
README.md - Reviewez 4 MR de vos camarades (Soit en approuvant, soit en commentant en cas d’erreurs) - Pour que toutes les MR soient validées, ne revalidez pas une MR déjà approuvée
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# NOM DU PROJET
Date et auteur du présent document : 1970-01-01, Alice Doe
## But et utilité du logiciel
<!-- Ce logiciel sert à ... -->
## Pourquoi ce projet vous intéresse
<!-- J'utilise déjà ce projet pour ... / Ce projet a l'air cool parce que ... -->
## Langages de programmation et technologies
<!-- Ce projet est en nodejs et utilise des dépendances via npm / Ce projet est en java et a des template de projet pour Eclipse / etc. -->
## Licence
<!-- Nom de licence avec lien vers le fichier de licence, identifiant SPDX, etc. -->
## Site Web du projet
<!-- Si applicable -->
## Url du dépôt de code
<!-- ... -->
## Retour sur le processus d'installation / prise en main
<!-- Il existe un paquet debian directement / Il faut compiler le logiciel pour l'utiliser / ... -->
<!-- Le logiciel a une interface graphique / s'utilise dans le navigateur / dans le terminal / etc. -->
## Capture d'écran
<!-- La capture d'écran est optionnelle -->
## Proposition de question sur la base de code
<!-- Exemple de questions : Quelle est le point d'entrée du programme ? Où est implémentée telle fonctionnalité ? -->
Vous pourrez par la suite contribuer à un projet, même si vous ne l’avez pas identifié vous-même. La personne qui l’aura ajouté sera juste prioritaire pour le choisir (sachant qu’on accepte en principe deux élèves par projet).