323 Commits

Author SHA1 Message Date
f8d678994b Éléments pour le manuel de la mallette pédagogique 2020-08-05 14:32:43 +02:00
356a0a9689 Correction pour la passage en python 3 2020-08-05 14:29:14 +02:00
00ff5356c9 ajustements de mise en page pour les documents type article 2020-08-05 14:29:14 +02:00
f9b473a7d9 WIP 2020-08-05 14:29:14 +02:00
dc5480785e correction 2020-07-06 16:51:49 +02:00
8f3d52eaee Update ScribeHorus 2020-02-07 09:13:06 +01:00
156d34e91e support de formation Scribe-Horus d’octobre 2019 2019-10-22 13:54:37 +02:00
510129b96e Révision de la formation ScribeAD-HorusAD 2019-10-09 16:57:11 +02:00
e940a629d8 Mise à jour de la formation ScribeAD-HorusAD 2019-10-09 10:38:31 +02:00
318c24f60b Révision du script d’initialisation des documents de formation 2019-10-09 10:30:01 +02:00
d27cbaf6ce Modifications pour la Nouvelle-Calédonie 2019-10-04 08:09:45 +02:00
6223b6b0f7 Mise à jour 2019-10-04 08:09:45 +02:00
7333bd2ad6 Mise à jour dse formations ScribeHorus 2019-10-02 16:03:36 +02:00
5e6aac0afd Fixes framesubtitle used twice in a frame 2019-04-09 20:36:27 +02:00
ee40013d4f Fixes syntax for description environment 2019-04-09 20:34:14 +02:00
bfd37a48db Détail sur les comptes d’un module Horus 2019-04-09 13:33:54 +02:00
7ff1621a09 Changement du titre 2019-04-07 21:27:26 +02:00
757b8c9a1e Réintroduction de la partie zéphir 2 et configuration de Horus 2019-04-07 21:25:37 +02:00
10b957930f Utiliser le routeur pour faciliter le déploiement 2019-04-07 12:12:41 +02:00
69392c851a Utiliser des ova plutôt que des images de disque simples 2019-04-07 09:58:26 +02:00
5f623509c8 Update plan show options 2019-04-07 05:48:47 +02:00
7ac1e75ec4 Adding MENJ logowq 2019-04-07 02:31:38 +02:00
047e6bddf8 Reprise de la formation scribe horus tronc commun 1 pour la Nouvelle Calédonie 2019-04-07 01:07:53 +02:00
7fc315f0ad Chambéry 2019-03-25 13:20:07 +01:00
e79bdb1ff0 wip 2019-03-25 13:20:07 +01:00
5b34655e4c Récupération des fragments manquants 2019-03-25 13:20:07 +01:00
ce9ee26e78 Mise à jour des utilitaires pour la création des formations 2019-03-25 13:20:07 +01:00
ddd71f3332 Composition de la formation pour le conseil départemental 73 2019-03-25 13:20:07 +01:00
79a7a997bb Initialisation du projet de formation pour le conseil départemental de Savoie 2019-03-25 13:20:07 +01:00
525d75a3f6 Mise à jour des fichiers communs et script d’initialisation 2019-03-25 13:20:07 +01:00
893066181c Prise en compte d'un argument positionnel pour restreindre la recherche des programmes à compiler à un répertoire 2019-03-25 13:20:07 +01:00
dbb51ab930 Exclure les fichiers temporaires de la coloration syntaxique. 2019-03-25 13:20:07 +01:00
ac59103f33 Rédaction du README
Explications sur comment utiliser le .tex
2019-03-25 13:20:07 +01:00
56c3c52fbb remise au propre après déplacements 2019-03-25 13:20:07 +01:00
dbf61a7e4e ajouter l'option shell-escape à xelatex pour les exercices TC2 2019-03-25 13:16:10 +01:00
b465d9156c CESI - Exo Microbloggr Solution - Création de statuts fonctionnelle 2019-03-25 13:16:10 +01:00
165dd355e6 CESI - Exo Microbloggr Solution - Authentification fonctionnelle 2019-03-25 13:16:09 +01:00
27c76de966 Intro Big Data: mise à jour slides + données d'exemple graphe 2019-03-25 13:16:09 +01:00
845ca0f67b Architecture N Tiers: ajout QCM 2019-03-25 13:16:09 +01:00
97dd70b285 some cleaning 2019-03-25 13:16:09 +01:00
cfd94c08b6 CESI: Intro Big Data - ajout exercice bdd clé/valeur et graphe 2019-03-25 13:16:09 +01:00
0918bbb1bb CESI: Intro Big Data - ajout tuile + exercice BDD orientée graphe 2019-03-25 13:16:09 +01:00
1ba5a6d790 CESI: Intro Big Data, biblio + environnement démo Hadoop 2019-03-25 13:16:09 +01:00
fede121bc4 algo et data science 2019-03-25 13:16:09 +01:00
f20ef936ce CESI: Intro Big Data, base bibliographie 2019-03-25 13:16:09 +01:00
008090d721 python2 -> python subfolder 2019-03-25 13:16:09 +01:00
0d286b85a0 en and fr python3 courses 2019-03-25 13:16:09 +01:00
323b4f6685 ancien cours python -> python2 2019-03-25 13:16:09 +01:00
1418454c18 algorithmique : api et paramètres 2019-03-25 13:16:09 +01:00
10485c94f1 CESI: DevOps, mise à jour des slides 2019-03-25 13:16:09 +01:00
f5356e2e41 CESI: Métiers DevOps, base slides 2019-03-25 13:16:09 +01:00
b7f40beda0 DIIAGE: session 23/03/2018 2019-03-25 13:16:09 +01:00
00c308cca6 Logomotion: React+Redux, corrections typo 2019-03-25 13:16:09 +01:00
675ad0fb70 Logomotion: Qualification 2019-03-25 13:16:09 +01:00
68a2e82bf2 Logomotion: React + Redux 2019-03-25 13:16:09 +01:00
bf25f8b140 CESI: Architectures N Tiers, ajout mini projet 'Alfred' 2019-03-25 13:16:09 +01:00
506d99e91b DIIAGE: ajout derniers cours 2019-03-25 13:16:09 +01:00
3998722c7f Logomotion: Base des slides pour la formation sur la qualification 2019-03-25 13:16:09 +01:00
10e0f69dba CESI: Sécurité entreprise, maquette + support OK 2019-03-25 13:16:09 +01:00
13e4a95892 CESI: Sécurité des entreprises, infrastructure Vagrant avec supervision Prometheus 2019-03-25 13:16:09 +01:00
708bed3a16 CESI: présentation + maquette Vagrant Sécurité entreprise 2019-03-25 13:16:09 +01:00
1fd175b4c9 Logomotion: maj formation Sécurité Web 2019-03-25 13:16:09 +01:00
de6251fed3 Logomotion: Sécurité Web, sécurisation du serveur GNU/Linux 2019-03-25 13:16:09 +01:00
4e4cf16e97 Logomotion: sécurité web, ajout exercice métrologie 2019-03-25 13:16:09 +01:00
b975949318 CESI: Architecture N Tiers, exemple microservices 2019-03-25 13:16:09 +01:00
8d6f44d938 Logomotion: Sécurité Web 2019-03-25 13:16:09 +01:00
3d295bac6e DIIAGE: session 19/01/2018 2019-03-25 13:16:09 +01:00
bcb396d40c DIIAGE: Prépa session 19/01/2018 2019-03-25 13:16:09 +01:00
1b1f48a0e3 CESI: architectures n tiers 2019-03-25 13:16:09 +01:00
f679c37468 CESI: Architecture N tiers 2019-03-25 13:16:09 +01:00
20cbdeef8d CESI: Architecture N tiers, exercice 2019-03-25 13:16:09 +01:00
34833d8186 CESI: Architecture N Tiers 2019-03-25 13:16:09 +01:00
3e85ca32a0 CESI: mise à jour fiche de préparation Architecture N tiers 2019-03-25 13:16:09 +01:00
3d2afb8b17 Logomotion: mise à jour introduction framework javascript 2019-03-25 13:16:09 +01:00
7add972706 Logomotion: tour d'horizon Javascript, base EmberJS 2019-03-25 13:16:09 +01:00
d3914eb51e Logomotion: Introduction Javascript 2019-03-25 13:16:09 +01:00
050515bbe6 Logomotion: slides Symfony3 seconde journée 2019-03-25 13:16:09 +01:00
6fa95a6de9 Logomotion: suites des slides Symfony3 2019-03-25 13:16:09 +01:00
4d1f3f73e1 CESI: réorganisation de l'arborescence 2019-03-25 13:16:09 +01:00
c3e75343db DIIAGE: réorganisation des questions 2019-03-25 13:16:09 +01:00
a9dba3b3b6 DIIAGE: TP sécurité des applicaiton web & métrologie appliquée à la sécurité 2019-03-25 13:16:09 +01:00
c90015ab94 Logomotion: Volet sécurité des applications Web, métrologie / prometheus 2019-03-25 13:16:09 +01:00
884905c1db Diiage: préparation QCM évaluation 22/12/2017 2019-03-25 13:16:09 +01:00
312c465084 Remise à niveau Symfony3: slides 2019-03-25 13:16:09 +01:00
3eb9b8da29 Symfony3: slides + revue planning journée 1 2019-03-25 13:16:09 +01:00
a741a6b20e Remise à niveau Symfony3: slides + planning 2019-03-25 13:16:09 +01:00
bef56bc3b4 CESI: Mise à jour slides/planning "Sécurité en entreprise" 2019-03-25 13:16:09 +01:00
23c84980a2 CESI: Mise à jour programme formation "Sécurité en entreprise" 2019-03-25 13:16:09 +01:00
150ba9180a Ajout des fichiers de lock LibreOffice à la liste des ignorés 2019-03-25 13:16:09 +01:00
bde23f198d CESII: Mise à jour slides, planning et notes 2019-03-25 13:15:33 +01:00
21fa68542c CESII: Slides formation sécurité entreprise 2019-03-25 13:15:33 +01:00
e65a11ae3b DIIAGE: mise à jour sujet TP 2019-03-25 13:15:33 +01:00
e92e905ec4 DIIAGE: Préparation session 20171208 2019-03-25 13:15:33 +01:00
0bcbd982cb Ajout rendus TP 2019-03-25 13:15:33 +01:00
fc21384b39 Préparation cours DIIAGE 08/12/2017 2019-03-25 13:15:33 +01:00
4b9665c390 Création de fiches d'exemple 2019-03-25 13:15:33 +01:00
4db1f56cd6 Ajout supports formation DIIAGE (DEV & RES 3) 2019-03-25 13:15:33 +01:00
894a252479 algo avancée 2019-03-25 13:15:33 +01:00
4a3107fd62 exercices de programmation raisonnée 2019-03-25 13:15:33 +01:00
1d4ba95e00 algo avancée 2019-03-25 13:15:33 +01:00
2ed2488a47 algo : problèmes NP complets 2019-03-25 13:15:33 +01:00
b5b00ce4d3 méthodes de tri rapide en python 2019-03-25 13:15:33 +01:00
bf45ad7859 support de cours algo avancée - correction unicode 2019-03-25 13:15:33 +01:00
a04519ca4a support de cours algo avancée 2019-03-25 13:15:33 +01:00
07b57d4515 contrainte de type par signature 2019-03-25 13:15:33 +01:00
98dd6eea17 corrections cours poo 2019-03-25 13:15:33 +01:00
14212752fc premiere version stable du cours de poo 2019-03-25 13:15:33 +01:00
051c60fed6 Correction du public pour les méthodes AGile 2019-03-25 13:15:33 +01:00
116fe4fcab relecture de qualification 2019-03-25 13:15:33 +01:00
7954bdadad relecture des méthodes agiles 2019-03-25 13:15:33 +01:00
bf6fc81fd0 relecture de la messagerie électronique 2019-03-25 13:15:33 +01:00
7973e2bfc8 relecture 2019-03-25 13:15:33 +01:00
ca20fc14f1 relecture 2019-03-25 13:15:33 +01:00
e4bc8d7263 relecture 2019-03-25 13:15:33 +01:00
450ad67479 relecture 2019-03-25 13:15:33 +01:00
6c1b3698ef relecture 2019-03-25 13:15:33 +01:00
a214ef0eda Mise à jour durée 2019-03-25 13:15:33 +01:00
8918d71c0a Coquillesé 2019-03-25 13:15:33 +01:00
a5dc1cce72 Programme de formation Logomotion - version LaTeX 2019-03-25 13:15:33 +01:00
9dd4040359 Retour de inc dans le dépôt 2019-03-25 13:15:33 +01:00
26b808e5ad Relecture - Corrections 2019-03-25 13:15:33 +01:00
becb4ce2c9 Retour du style dans le dépôt 2019-03-25 13:15:33 +01:00
07d685df35 Mise à jour du tire de la formation 2019-03-25 13:15:33 +01:00
6ffd056366 Mise à jour du tire de la formation 2019-03-25 13:15:33 +01:00
3e4e753cfb Mise à jour des plans de formation methodes agiles, qualification et smtp-imap 2019-03-25 13:15:33 +01:00
750d161159 Now we can build only one program
./programme.sh my_directory
2019-03-25 13:15:33 +01:00
778e98356a Ajout du programme de qualification 2019-03-25 13:14:17 +01:00
b80967a4f0 Ajout du programme de la formation AGILE 2019-03-25 13:14:17 +01:00
eeb73453e4 Precisions partie symfony 3 2019-03-25 13:14:17 +01:00
4b2a295589 Ajout du plan de formation pour Logomotion 2019-03-25 13:14:17 +01:00
43ff0af8a8 Ajout du programme pour la formation smtp-imap 2019-03-25 13:14:17 +01:00
d994e6762b modèle objet de python 2019-03-25 13:14:17 +01:00
0d2e9732b3 méchanismes objets 2019-03-25 13:14:17 +01:00
baab6fdd1f debut du cours de poo 2019-03-25 13:14:17 +01:00
9a03e5190d tronc commun algo/algo approfondie 2019-03-25 13:14:17 +01:00
ca7c2df715 tronc commun 2019-03-25 13:14:17 +01:00
a375adbd45 menage 2019-03-25 13:14:17 +01:00
ea52e31866 mise en place des cours algo + poo 2019-03-25 13:14:17 +01:00
de3a902fc5 mise en place des cours poo et algo approfondie 2019-03-25 13:14:17 +01:00
0f29f8442d alog : rappels de cybernétique 2019-03-25 13:14:17 +01:00
018af24545 notes pour amélioration du cours 2019-03-25 13:14:17 +01:00
b98c46b4ae corrections du cours après la présentation 2019-03-25 13:14:17 +01:00
08495c6a07 typo 2019-03-25 13:14:17 +01:00
07e85ce432 exercices de travaux pratiques 2019-03-25 13:14:17 +01:00
c225693e35 premiers sujets de tp 2019-03-25 13:14:17 +01:00
635b81422b logos 2019-03-25 13:14:17 +01:00
175a8424f9 diaporama algorithmique 2019-03-25 13:14:17 +01:00
29e46e0e16 présentation beamer 2019-03-25 13:14:17 +01:00
dcfe04bd9b template de présentation beamer 2019-03-25 13:14:17 +01:00
90a02579ac exercices de manipulation des structures de données 2019-03-25 13:14:17 +01:00
c495caed08 exercices supplémentaires 2019-03-25 13:14:17 +01:00
eb3e054e8c ajout du diaporama 2019-03-25 13:14:17 +01:00
c9f85c3355 suprression des warning au build 2019-03-25 13:14:17 +01:00
cf04024d38 suppression des derniers fixme 2019-03-25 13:14:17 +01:00
c23e306403 cours : premiere version 2019-03-25 13:14:17 +01:00
11c43df090 algo programmation structurée 2019-03-25 13:14:17 +01:00
428dc25db2 langage de modules 2019-03-25 13:14:17 +01:00
7c62b61421 algorithme module python 2019-03-25 13:14:17 +01:00
310d8021b4 exercices (maximum d'une liste) 2019-03-25 13:14:17 +01:00
141f4a12a7 modulatié et programmation raisonnée 2019-03-25 13:14:17 +01:00
57244e006e exercices sur les structures de données de base (2) 2019-03-25 13:14:17 +01:00
5420d0841b exercices sur les structures de données de base 2019-03-25 13:14:17 +01:00
79eeb4a1df exos d'algo 2019-03-25 13:14:17 +01:00
2dee810ffd exercices sur les structures de controle de base 2019-03-25 13:14:17 +01:00
75b80773cc exercices sur les variables 2019-03-25 13:14:17 +01:00
bf2d772c1b exemples d'algorithmes 2019-03-25 13:14:17 +01:00
65adac7ac9 Corrections dans l’exercice ircd 2019-03-25 13:14:17 +01:00
11b2b9f935 exemples d'algorithmes sur des structures de données simples 2019-03-25 13:14:17 +01:00
b8bf37cafb structures de données (list + dico) 2019-03-25 13:14:17 +01:00
a2711a778e algorithme vague 2019-03-25 13:14:17 +01:00
6e3966418f portée d'une variable 2019-03-25 13:14:17 +01:00
f2e7a835f2 structures de données 2019-03-25 13:14:17 +01:00
9a14db234b organisation des exercices 2019-03-25 13:14:17 +01:00
00a9217e47 programmation modulaire 2019-03-25 13:14:17 +01:00
97a8e6d31f suppresion des Statex des algo de style impératif 2019-03-25 13:14:17 +01:00
287dc14656 ajout d'aperçu des types d'algorithmes 2019-03-25 13:14:17 +01:00
5c2ec45681 utilisation de l'extension ifconfig pour les exercices et les corrections 2019-03-25 13:14:17 +01:00
a6f960e6bc reorganisation du cours 2019-03-25 13:14:17 +01:00
f649769545 reorganisation du cours 2019-03-25 13:14:17 +01:00
b988c5cc07 reorganisation (ordonnancement) du cours 2019-03-25 13:14:17 +01:00
07d2fa69ed presentation du cours d'algo 2019-03-25 13:14:17 +01:00
f5670a7321 définition des actions d'un programme 2019-03-25 13:14:17 +01:00
fdfc702149 présentation du cours et avant propos 2019-03-25 13:14:17 +01:00
47fa14c1af mise à jour pour PSI + raid logiciel (non inclu) 2019-03-25 13:14:17 +01:00
859f2cdf1c algorithme factorielle 2019-03-25 13:14:17 +01:00
55234742c5 diveres définitions de la programmation 2019-03-25 13:14:17 +01:00
3915b852d4 définition d'une fonction 2019-03-25 13:14:17 +01:00
9579fbc662 ajout des principales structures de contrôles 2019-03-25 13:14:17 +01:00
a90179af53 instruction de saut conditionnel 2019-03-25 13:14:17 +01:00
2d4265308b ajout d'un exemple de procedure 2019-03-25 13:14:17 +01:00
be32ccce02 Ajout de la notion de fonction 2019-03-25 13:14:17 +01:00
5f289978d7 correction orthographique 2019-03-25 13:14:17 +01:00
30f8406457 exo avec roundcube et non thunderbird 2019-03-25 13:14:17 +01:00
19b2b206dc ajout script création user 2019-03-25 13:14:17 +01:00
6adb6f614d mise en page 2019-03-25 13:14:17 +01:00
836c70c346 modification exercice et contenu 2019-03-25 13:14:17 +01:00
c66700d016 amelioration création utilisateur Mysql 2019-03-25 13:14:17 +01:00
103909fe15 modification de l'exercice pour l'ajout d'application web 2019-03-25 13:14:17 +01:00
99737bbc87 maj log squid/e2guardian 2019-03-25 13:14:17 +01:00
9f706ad27b maj formation amon 2019-03-25 13:14:17 +01:00
603bbf6bf1 réflexions sur l'abstraction algorithmique 2019-03-25 13:14:16 +01:00
ce0578399d définition d'un algorithme 2019-03-25 13:14:16 +01:00
380bfe4356 package algorithm 2019-03-25 13:14:16 +01:00
c08cfd5492 section algorithme 2019-03-25 13:14:16 +01:00
bb68fc6067 ajout des annexses 2019-03-25 13:14:16 +01:00
0ad6ba087e séparation trouver information serveur/internet + ajout info internet dans les différentes formations 2019-03-25 13:14:16 +01:00
e4c68538cf ajout des coordonnées du forum EOLE 2019-03-25 13:14:16 +01:00
34aa40e3d9 présentation du cours 2019-03-25 13:14:16 +01:00
09ed36f009 debut de glossaire 2019-03-25 13:14:16 +01:00
9d22aa4bb4 debut de glossaire 2019-03-25 13:14:16 +01:00
60b1491067 methodes agiles 2019-03-25 13:14:16 +01:00
1bb3ebca56 méthodologies agiles 2019-03-25 13:14:16 +01:00
259173dd27 modification des besoins pour la prépartion de la formation scribe-horus 2019-03-25 13:14:16 +01:00
8a577a72a3 définition du cours d'algorithmique 2019-03-25 13:14:16 +01:00
fed6abb954 début du cours d'algorithmique pour le CESI 2019-03-25 13:14:16 +01:00
b4d14ffbcb coorection orthographique et ajout changement bacula-bareos 2019-03-25 13:14:16 +01:00
341567b3d0 modification preparation 2019-03-25 13:14:16 +01:00
9e29ca6879 mise à jour du contenu 2019-03-25 13:14:16 +01:00
1cd8714020 modification formation pour scribe 2.6 et W10 2019-03-25 13:14:16 +01:00
c79cc823c5 modification contenu 2019-03-25 13:14:16 +01:00
38b317411a erreur chemin des dicos locals 2019-03-25 13:14:16 +01:00
15f0448816 mise à jour des excercices tronc-commun-2 2019-03-25 13:14:16 +01:00
7157bb6725 mise à jour formation tc1 et tc2 2019-03-25 13:14:16 +01:00
27ac5aa3c5 Ajout des nouvelles images 2019-03-25 13:14:16 +01:00
71bed745c0 Ajout 2.6.0 2019-03-25 13:14:16 +01:00
bff6fd0347 mise à jour 2019-03-25 13:14:16 +01:00
c59973e342 ajout restauration complète en 2.6 2019-03-25 13:14:16 +01:00
588a446ebd reformulation et correction orthographique 2019-03-25 13:14:16 +01:00
11205e7eae complement dans l'exemple d'exercice 2019-03-25 13:14:16 +01:00
86a64f73ce corrections 2019-03-25 13:14:16 +01:00
9d50c05062 ajout d'un exemple d'exercice corrigé 2019-03-25 13:14:16 +01:00
180780bfb3 mise à jour de la formation pour 2.6 2019-03-25 13:14:16 +01:00
d23f750963 Fix title 2019-03-25 13:14:16 +01:00
792183c404 modification plan et affichage formation 2019-03-25 13:14:16 +01:00
99539bfbe1 ajout formation personnalidée sallanches 2019-03-25 13:14:16 +01:00
d6d8d34c83 Adding new background 2019-03-25 13:14:16 +01:00
4cd17235e5 Update de la formation amon sphynx 2019-03-25 13:14:16 +01:00
dd4f04fa56 ajout de doc sur les méta classes 2019-03-25 13:14:16 +01:00
ad27c7704e ajout de doc sur les classes et les objets 2019-03-25 13:14:16 +01:00
5b42326506 corrections coquilles 2019-03-25 13:14:16 +01:00
a5c3e0bf29 paragraphe generique 2019-03-25 13:14:16 +01:00
6f69f127b9 sphinx et docutils 2019-03-25 13:14:16 +01:00
8a8d2c1d52 ajout des imports et de sys.modules 2019-03-25 13:14:16 +01:00
8ea173ab17 ajout des design patterns 2019-03-25 13:14:16 +01:00
cbecfcbc23 ajout des design patterns 2019-03-25 13:14:16 +01:00
7b99d805c6 ajout de la doc sur les exceptions 2019-03-25 13:14:16 +01:00
78acdb5816 config pour la version pdf 2019-03-25 13:14:16 +01:00
122ae1e085 editeurs python : syntaxe 2019-03-25 13:14:16 +01:00
a2dd45b16a editeurs python 2019-03-25 13:14:16 +01:00
478b2134f1 Exo ngResource 2019-03-25 13:14:16 +01:00
65bfa0f9b3 Ajout exo protractor 2019-03-25 13:14:16 +01:00
361715d79e Ajout exo Karma 2019-03-25 13:14:16 +01:00
67b56e88ec Ajout exo routage 2019-03-25 13:14:16 +01:00
84381980f7 Corrections slides 2019-03-25 13:14:16 +01:00
3fe0bcd45d Formation Angular: exos supplémentaires 2019-03-25 13:14:16 +01:00
7df3129ace (not) vanilla todos 2019-03-25 13:14:16 +01:00
18aec7b86f Angular, première partie 2019-03-25 13:14:16 +01:00
a6f66208f9 Ajout exo services 2019-03-25 13:14:16 +01:00
7cbddf946d Base formation angular+amélioration layout formations JS 2019-03-25 13:14:16 +01:00
60d10200f7 Suppression node_modules exercices 2019-03-25 13:14:16 +01:00
f8046ab176 Nettoyage exemple tests-unitaires 2019-03-25 13:14:16 +01:00
fe2ccc442c Nettoyage exercices 2019-03-25 13:14:15 +01:00
eb7125bd6d Correction exo heritge js 2019-03-25 13:14:15 +01:00
b1cbcaefd3 Ajout exercices supplémentaires formation JS 2019-03-25 13:14:15 +01:00
ee0ae6d1be Corrections typo + exo VanillaTodos complet 2019-03-25 13:14:15 +01:00
482caf5b47 Ajout exo VanillaTodos 2019-03-25 13:14:15 +01:00
4a10785c1a Ajout slides supplémentaires formation JS 2019-03-25 13:14:15 +01:00
ebbfb6cc5b More Javascript 2019-03-25 13:14:15 +01:00
d525a262de Inversion des paramètres pour bacula 2019-03-25 13:14:15 +01:00
4a25906d2a Ajustement du plan 2019-03-25 13:14:15 +01:00
84e0fa6967 Mise à jour du plan de formation 2019-03-25 13:14:15 +01:00
95b99232a6 Formation JS, ajout slides suppl. 2019-03-25 13:14:15 +01:00
a041e90b70 Essai de markdown pour documenter la génération des plans de formations 2019-03-25 13:14:15 +01:00
91fd1e10d3 Ajout de la durée 2019-03-25 13:14:15 +01:00
26918e45b2 Ajout doc dépendances Latex 2019-03-25 13:13:21 +01:00
708e54482b Ajout base formation Javascript 2019-03-25 13:12:26 +01:00
1411a3349c Relecture 2019-03-25 13:12:26 +01:00
1f076c6c0b Relecture 2019-03-25 13:12:26 +01:00
d4b36cd125 Relecture 2019-03-25 13:12:26 +01:00
2b39d24ab8 Couleur différente pour le sous-titre de diapo 2019-03-25 13:12:26 +01:00
4006cde326 Arrangement des diapos trop longues 2019-03-25 13:12:26 +01:00
a0c039ba4e Relecture scribe-horus 2019-03-25 13:12:26 +01:00
78102f3422 Relecture scribe-horus 2019-03-25 13:12:26 +01:00
55c915cd38 Relecture scribe-horus 2019-03-25 13:12:26 +01:00
0161468259 Relecture scribe/horus 2019-03-25 13:12:26 +01:00
176864177d ajout EOP 2019-03-25 13:12:26 +01:00
044d590441 plus de <fichier>.eol pour instance 2019-03-25 13:12:26 +01:00
63e1f4fc5d mise à jour schedule 2019-03-25 13:12:26 +01:00
74ed95a8a0 Adaptation pour EOLE 2.4.1 2019-03-25 13:12:26 +01:00
d00ff3d73c Adaptation des dictionnaire et template pour la 2.4.x 2019-03-25 13:12:26 +01:00
94dd82ed99 Corrections mineures 2019-03-25 13:12:26 +01:00
5d6d63de55 Corrections mineures (ou pas) 2019-03-25 13:12:26 +01:00
82fde1dd72 Corrections mineures 2019-03-25 13:12:26 +01:00
b1e0494239 Adaptations à la 2.4 2019-03-25 13:12:25 +01:00
f8beb13cae Échappement des caractères spéciaux 2019-03-25 13:12:25 +01:00
24d6d59b87 Relecture de la formation tronc commun 1 2019-03-25 13:12:25 +01:00
3f2cddb0f2 Relecture et correction 2019-03-25 13:09:52 +01:00
d1e541032b modif exercices 2019-03-25 13:09:52 +01:00
99de52f66b Prise en compte d'un argument positionnel pour restreindre la recherche des programmes à compiler à un répertoire 2016-03-01 11:44:10 +01:00
08eef1bb14 Exclure les fichiers temporaires de la coloration syntaxique. 2015-11-06 12:12:39 +01:00
0a4c8eed61 Ajout d'un complément d'information pour la formation Git 2015-08-31 12:25:09 +02:00
934758dd1d Mise à jour de la syntax pour la mise en forme dans Gogs 2015-08-31 11:57:18 +02:00
725f4d7274 Rédaction du README
Explications sur comment utiliser le .tex
2015-08-31 11:52:20 +02:00
a67a326fef Diapo manquante 2015-07-20 17:59:57 +02:00
d562837e6c Utilitaires pour préparer les fichiers des formations 2015-07-20 17:54:14 +02:00
0cc6b9bc0b Consignes plus claires pour les exercices pour une utilisation en l'absence de formateur 2015-07-20 17:53:41 +02:00
32ab048803 Utilisation d'une version récente de minted pour les retours à la ligne automatiques 2015-07-20 17:51:37 +02:00
a8aa04147c Version utilisée pour la formation à OCP 2015-07-20 10:16:18 +02:00
232473472a Formation git 2015-07-15 20:52:22 +02:00
dbd84ec3a0 Plan de formation git 2015-07-07 10:03:09 +02:00
c4642d833a Ajout du nom du fichier dans le template pour faciliter la recherche 2015-07-06 15:11:15 +02:00
82603c4400 Ajout de diapositive 2015-07-06 15:08:31 +02:00
acabd531bb Script de création des diapositives 2015-07-06 15:08:07 +02:00
62a39c31bc Ajout des diapositives 2015-07-06 15:06:10 +02:00
003cf96b4d Méthodes pour initialiser les fichiers de la formation 2015-07-06 14:45:39 +02:00
96e93882b2 Avancement du plan 2015-07-06 11:28:10 +02:00
f8d8f8cfcf Mise en forme 2015-07-06 08:55:50 +02:00
2825c2c32f Mise en forme de la présentation sur git 2015-06-29 14:16:46 +02:00
41ef53be2e Tentative de compilation 2015-03-10 11:49:25 +01:00
e1ad7bc2e1 remise au propre après déplacements 2015-03-10 09:20:45 +01:00
f6d7da7878 Formation tronc commun 1 au format skb 2015-03-09 15:19:54 +01:00
47c26b2cfc déplacement des images et suppression de fichiers inutiles. 2015-03-09 15:07:39 +01:00
9e83c67bf7 répertoires pour skb 2015-03-09 09:27:18 +01:00
609 changed files with 18409 additions and 91 deletions

4
.gitignore vendored
View File

@ -11,6 +11,10 @@
*.bcf
*.idx
*.run.xml
*.pygtex
*.vrb
build-messages-*.txt
plans_de_formation.tar.gz
_minted-*/
.~lock*
_minted-*/

25
README Normal file
View File

@ -0,0 +1,25 @@
Pour la formation sur Git, il faut compiler avec XeLaTeX.
XeLaTeX
=======
Langage de description de document avec prise en charge native de l'UTF-8
XeLaTeX est une variante de LaTeX, la structure générale du document reste identique et l'immense majorité des commandes et packages continuent de fonctionner comme d'habitude.
http://doc.ubuntu-fr.org/xelatex
http://fr.wikipedia.org/wiki/XeTeX
Installation
============
Sous Ubuntu 12.04 :
# apt-get install texlive-xetex
Utilisation
===========
Pour la formation sur Git, il faut compiler avec XeLaTeX.
Usage :
$ xelatex --shell-escape skell.tex

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,5 @@
\begin{frame}
\begin{exampleblock}{}
Des questions ?
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,11 @@
\section{Licence}
Cette œuvre est mise à disposition sous licence \href{http://creativecommons.org/licenses/by-nc-sa/2.0/fr/}{\textsc{cc-by-sa-2.0}}
\begin{itemize}
\item Attribution
\item Partage dans les Mêmes Conditions 2.0
\item France
\end{itemize}
Pour voir une copie de cette licence, visitez
\href{http://creativecommons.org/licenses/by-sa/2.0/fr/}{http://creativecommons.org/licenses/by-sa/2.0/fr/}
ou écrivez à Creative Commons, 444 Castro Street, Suite 900,
Mountain View, California, 94041, USA.

View File

@ -0,0 +1,18 @@
\skbheading{Lannuaire de module Scribe}
Lannuaire du module Scribe est opéré à laide du logiciel OpenLDAP.
Les schémas mis en place sont définis selon les règles métiers de lÉducation nationale.
Les schémas mis en place sont les suivants :
\begin{itemize}
\item core.schema
\item cosine.schema
\item inetorgperson.schema
\item nis.schema
\item samba.schema
\item eole.schema
\item eoleshare.schema
\item radius.schema
\item ent.schema
\end{itemize}
Les schémas \emph{core.schema}, \emph{cosine.schema} et \emph{nis.schema} sont des schémas classiques pour les annuaires décrivant des personnes.
Les autres schémas, placés dans le sous-répertoire \emph{eole}, décrivent les objets nécessaires pour Samba (\emph{samba.schema}), les objets précisant les types de personnes (\emph{eole.schema}) et les partages (\emph{eoleshare.schema}), les attributs pour lutilisation de Radius (\emph{radius.schema}) et, enfin, les objets et attributs pour limplémentation du schéma directeur des espaces numériques de travail (\emph{ent.schema}).

View File

@ -0,0 +1,33 @@
\skbheading{Les classes dobjets métiers de lannuaire du module Scribe}
Les classe dobjets métiers de lannuaire du module Scribe sont celles décrites dans les schémas de plus haut niveau.
Ces classes dobjets décrivent des utilisateurs, des groupes dutilisateurs et des ressources comme les partages.
Plusieurs classes dobjets peuvent être utilisées conjointement pour préciser le type de la ressource décrite : les classes dobjects sont complémentaires et ne sont pas organisées de manière hiérarchique.
Les classes dont le nom débute par \emph{ENT} sont issues du schéma directeur des espaces numériques de travail.
Les classes dobjets susceptibles dêtre utilisées pour les personnes sont les suivantes :
\begin{itemize}
\item Eleves
\item administrateur
\item responsable
\item administratif
\item ENTPerson
\item ENTEleve
\item ENTAuxPersRelEleve
\item ENTAuxEnseignant
\item ENTAuxNonEnsServAc
\item ENTAuxNonEnsCollLoc
\item ENTAuxNonEnsEtab
\item ENTAuxPersExt
\item ENTAuxTuteurStage
\item ENTAuxRespEntrp
\item eolemail
\item autre
\end{itemize}
Les classes dobjets susceptibles dêtre utilisées pour les groupes sont les suivantes :
\begin{itemize}
\item eolegroupe
\item classe
\item ENTGroupe
\item ENTClasse
\end{itemize}

View File

@ -0,0 +1,79 @@
\skbheading{La fiche du personnel administratif dans lannuaire du module Scribe}
Le personnel administratif, dans lannuaire du module Scribe, est la conjonction de plusieurs classes dobjets :
\begin{itemize}
\item top
\item person
\item organizationalPerson
\item posixAccount
\item shadowAccount
\item inetOrgPerson
\item sambaSamAccount
\item administratif
\item ENTPerson
\item ENTAuxNonEnsEtab
\item radiusprofile
\end{itemize}
La partie métier est portée par les classes \emph{administratif}, \emph{ENTPerson} et \emph{ENTAuxNonEnsEtab}.
Les attributs susceptibles dêtre associés à un personnel administratif sont les suivants :
\begin{itemize}
\item les attributs issus de la classe administratif :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item typeadmin
\item codecivilite
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item dateNaissance
\item mailDir
\item mailHost
\item intid
\item FederationKey
\item Divcod
\item ManagedGroup
\item LastUpdate
\item mailAlternateAddress
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTPerson :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item ENTPersonLogin
\item ENTPersonJointure
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTPersonAutresPrenoms
\item ENTPersonNomPatro
\item ENTPersonSexe
\item ENTPersonCentresInteret
\item ENTPersonAdresse
\item ENTPersonCodePostal
\item ENTPersonVille
\item ENTPersonPays
\item ENTPersonAlias
\item ENTPersonStructRattach
\item ENTPersonFonctions
\item ENTPersonProfils
\item ENTPersonDateNaissance
\item personalTitle
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTAuxNonEnsEtab :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item aucun attribut obligatoire
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTAuxNonEnsEtabService
\end{itemize}
\end{itemize}
\end{itemize}

View File

@ -0,0 +1,97 @@
\skbheading{La fiche de lélève dans lannuaire du module Scribe}
Lélève, dans lannuaire du module Scribe, est la conjonction de plusieurs classes dobjets :
\begin{itemize}
\item top
\item person
\item organizationalPerson
\item posixAccount
\item shadowAccount
\item inetOrgPerson
\item sambaSamAccount
\item Eleves
\item ENTPerson
\item ENTEleve
\item radiusprofile
\end{itemize}
La partie métier est portée par les classes \emph{Eleves} et \emph{ENTEleve}.
Les attributs susceptibles dêtre associés à un élève sont les suivants :
\begin{itemize}
\item les attributs issus de la classe Eleves :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item givenName
\item codecivilite
\item mail
\item mailHost
\item userPassword
\item employeeNumber
\item dateNaissance
\item Meflcf
\item Divcod
\item uid
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item mailDir
\item telephoneNumber
\item mailForwardingAddress
\item mailAlternateAddress
\item textelibre
\item photo
\item diffusion
\item dermaj
\item Meflcm
\item Divcodmso
\item mailparent
\item FederationKey
\item Ine
\item postalAddress
\item rne
\item LastUpdate
\item intid
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTEleve :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item ENTEleveStatutEleve
\item ENTEleveMEF
\item ENTEleveLibelleMEF
\item ENTEleveNivFormation
\item ENTEleveFiliere
\item ENTEleveEnseignements
\item ENTEleveClasses
\item ENTEleveMajeur
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTEleveVilleNaissance
\item ENTEleveDeptNaissance
\item ENTElevePaysNaissance
\item ENTEleveParents
\item ENTEleveAutoriteParentale
\item ENTElevePersRelEleve1
\item ENTEleveQualitePersRelEleve1
\item ENTElevePersRelEleve2
\item ENTEleveQualitePersRelEleve2
\item ENTEleveBoursier
\item ENTEleveRegime
\item ENTEleveTransport
\item ENTEleveMEFRattach
\item ENTEleveNivFormationDiplome
\item ENTEleveSpecialite
\item ENTEleveGroupes
\item ENTEleveEnsRespStage
\item ENTEleveEnsTutStage
\item ENTEleveEntrTutStage
\item ENTEleveEntrAutres
\item ENTEleveDelegClasse
\item ENTEleveDelegAutres
\item ENTEleveMajeurAnticipe
\item ENTEleveStructRattachId
\end{itemize}
\end{itemize}
\end{itemize}

View File

@ -0,0 +1,89 @@
\skbheading{La fiche de lenseignant dans lannuaire du module Scribe}
Lenseignant, dans lannuaire du module Scribe, est la conjonction de plusieurs classes dobjets :
\begin{itemize}
\item top
\item person
\item organizationalPerson
\item posixAccount
\item shadowAccount
\item inetOrgPerson
\item sambaSamAccount
\item administrateur
\item ENTPerson
\item ENTAuxEnseignant
\item radiusprofile
\end{itemize}
La partie métier est portée par les classes \emph{administrateur}, \emph{ENTPerson} et \emph{ENTAuxEnseignant}.
Les attributs susceptibles dêtre associés à un enseignant sont les suivants :
\begin{itemize}
\item les attributs issus de la classe administrateur :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item typeadmin
\item codecivilite
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item dateNaissance
\item mailDir
\item mailHost
\item mailForwardingAddress
\item mailAlternateAddress
\item Meflcf
\item Divcod
\item FederationKey
\item ManagedGroup
\item LastUpdate
\item intid
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTPerson :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item ENTPersonLogin
\item ENTPersonJointure
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTPersonAutresPrenoms
\item ENTPersonNomPatro
\item ENTPersonSexe
\item ENTPersonCentresInteret
\item ENTPersonAdresse
\item ENTPersonCodePostal
\item ENTPersonVille
\item ENTPersonPays
\item ENTPersonAlias
\item ENTPersonStructRattach
\item ENTPersonFonctions
\item ENTPersonProfils
\item ENTPersonDateNaissance
\item personalTitle
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTAuxEnseignant :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item aucun attribut obligatoire
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTAuxsEnsMEF
\item ENTAuxEnsCategoDiscipline
\item ENTAuxEnsMatiereEnseignEtab
\item ENTAuxEnsClasses
\item ENTAuxEnsGroupes
\item ENTAuxEnsClassePrincipal
\item ENTAuxEnsRespStage
\item ENTAuxEnsTutStage
\end{itemize}
\end{itemize}
\end{itemize}

View File

@ -0,0 +1,73 @@
\skbheading{La fiche du responsable délève dans lannuaire du module Scribe}
Le responsable délève, dans lannuaire du module Scribe, est la conjonction de plusieurs classes dobjets :
\begin{itemize}
\item inetOrgPerson
\item responsable
\item ENTPerson
\item ENTAuxPersRelEleve
\end{itemize}
La partie métier est portée par les classes \emph{responsable}, \emph{ENTPerson} et \emph{ENTAuxPersRelEleve}.
Les attributs susceptibles dêtre associés à un responsable délève sont les suivants :
\begin{itemize}
\item les attributs issus de la classe responsable  :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item aucun attribut obligatoire
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item mailDir
\item mailHost
\item sambaLMPassword
\item sambaNTPassword
\item codecivilite
\item LastUpdate
\item gecos
\item eleve
\item intid
\item dateNaissance
\item mailPerso
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTPerson :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item ENTPersonLogin
\item ENTPersonJointure
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTPersonAutresPrenoms
\item ENTPersonNomPatro
\item ENTPersonSexe
\item ENTPersonCentresInteret
\item ENTPersonAdresse
\item ENTPersonCodePostal
\item ENTPersonVille
\item ENTPersonPays
\item ENTPersonAlias
\item ENTPersonStructRattach
\item ENTPersonFonctions
\item ENTPersonProfils
\item ENTPersonDateNaissance
\item personalTitle
\end{itemize}
\end{itemize}
\item les attributs issus de la classe ENTAuxPersRelEleve :
\begin{itemize}
\item dont les attributs obligatoires :
\begin{itemize}
\item ENTAuxPersRelEleveEleve
\end{itemize}
\item et les attributs optionnels :
\begin{itemize}
\item ENTAuxPersRelEleveRepresentant
\end{itemize}
\end{itemize}
\end{itemize}

View File

@ -0,0 +1,2 @@
\skbheading{schemas.tex}
fichier content/modules\_eole\_envole/scribe/annuaire/schemas.tex à éditer

View File

@ -0,0 +1,29 @@
\skbheading{Les outils du backend Scribe}
Le module Scribe amène des scripts pour la gestion des utilisateurs et des fonctions liées.
Ces fonctions utilisent les mêmes bibliothèques que lEAD2 pour la gestion des utilisateurs et groupes et sont donc une façon équivalente de manipuler lannuaire.
La liste des scripts disponibles est la suivante :
\begin{itemize}
\item ajout\_partage.py
\item change-classe.py
\item config-controle-vnc.py
\item creation-administratif.py
\item creation-eleve.py
\item creation-groupe.py
\item creation-prof.py
\item desinscription.py
\item droits\_partage.sh
\item droits\_user.py
\item inscription.py
\item mailsync.py
\item maj\_regle\_esu.sh
\item manage\_special\_shares.py
\item migre-domaine-messagerie.sh
\item modifie\_profil.py
\item regenalias.sh
\item regen\_maillist.py
\item suppression\_groupe.py
\item suppression\_utilisateur.py
\item zenity\_console.py
\end{itemize}

View File

@ -0,0 +1,2 @@
\skbheading{creation-administratif.tex}
fichier content/modules\_eole\_envole/scribe/backend/creation-administratif.tex à éditer

View File

@ -0,0 +1,28 @@
\skbheading{creation-eleve.py}
Le script \emph{creation-eleve.py} est utilisé pour créer un nouvel utilisateur du type élève dans lannuaire du module Scribe.
La fiche dun élève dans lannuaire du scribe contient obligatoirement :
\begin{itemize}
\item un identifiant de connexion ;
\item la classe de rattachement ;
\item un mot de passe ;
\item le prénom de lélève ;
\item le nom de famille de lélève ;
\item la date de naissance de lélève ;
\item le numéro de lélève ;
\item la civilité de lélève.
\end{itemize}
En complément, il est possible de renseigner les éléments suivants :
\begin{itemize}
\item le niveau de lélève ;
\item le type de domaine pour le courriel de lélève ;
\item un quota disque à assigner à lélève ;
\item le type de profil pour lutilisation dun poste client Windows ;
\item lactivation du shell pour permettre la connexion sur un poste client GNU/Linux.
\end{itemize}
\begin{description}
\item[emplacement] /usr/share/eole/backend
\item[aide] creation-eleve.py
\end{description}

View File

@ -0,0 +1,2 @@
\skbheading{creation-groupe.tex}
fichier content/modules\_eole\_envole/scribe/backend/creation-groupe.tex à éditer

View File

@ -0,0 +1,2 @@
\skbheading{creation-prof.tex}
fichier content/modules\_eole\_envole/scribe/backend/creation-prof.tex à éditer

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Source Code Management}
\begin{description}
\item[SCM] Système de gestion du code source
\end{description}
\begin{exampleblock}{}
Outil permettant le développement de code informatique en conservant les étapes de création.
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,11 @@
\begin{frame}
\frametitle{Fonctionnalités d'un SCM}
\framesubtitle{Que peut faire un SCM pour vous ?}
Avec un SCM :
\begin{itemize}
\item produisez des bugs en toute quiétude
\item déterminez qui est responsable du bug bloquant
\item corrigez facilement ce bug
\item identifiez cet état du code comme stable
\end{itemize}
\end{frame}

View File

@ -0,0 +1,47 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{Récapitulatif}
\tiny{
\begin{columns}
\begin{column}{.3\textwidth}
Faire le point :
\begin{itemize}
\item status
\item ls-files
\item diff
\item log
\item grep
\item cherry
\item show
\item bisect
\item blame
\end{itemize}
\end{column}
\begin{column}{.3\textwidth}
Modifier le contenu :
\begin{itemize}
\item checkout
\item pull
\item fetch
\item merge
\item rebase
\item add
\item reset
\item clean
\item commit
\item cherry-pick
\item revert
\item push
\item filter-branch
\end{itemize}
\end{column}
\begin{column}{.3\textwidth}
Organiser le développement :
\begin{itemize}
\item branch
\item tag
\end{itemize}
\end{column}
\end{columns}
}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{add}
\begin{description}
\item[\commande{git add}] Ajouter le contenu d'un fichier à l'index.
\end{description}
\skbinput[from=fig]{apps/git_commande_add}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-u}] ajout des modifications des fichiers déjà connus de git
\item[\commande{-i}] ajout interactif
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{bisect}
\begin{description}
\item[\commande{git bisect start}] Démarrer une session de recherche du commit problématique par division binaire
\end{description}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{blame}
\begin{description}
\item[\commande{git blame}] Afficher l'auteur et la référence de la dernière modification pour chaque ligne d'un fichier
\end{description}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{branch}
\begin{description}
\item[git branch] Gérer les branches
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--list}] Lister les branches (\commande{-a} les branches locales et distantes, \commande{-r} les branches distantes uniquement)
\item[\commande{-d}] Supprimer une branche
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{checkout}
\begin{description}
\item[\commande{git checkout}] Synchroniser le répertoire de travail avec une version
\end{description}
\skbinput[from=fig]{apps/git_commande_checkout}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-b}] Créer une nouvelle branche et déplacer HEAD dessus
\item[\commande{--ours --theirs}] Conserver des modifications explicitement
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,12 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{cherry-pick}
\begin{description}
\item[\commande{git cherry-pick}] Appliquer les changements introduits dans un commit donné
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Interrompre le processus
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{cherry}
\begin{description}
\item[\commande{git cherry}] Trouver les commit qui ne sont pas encore appliqués dans le dépôt distant
\end{description}
\end{frame}

View File

@ -0,0 +1,13 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{clean}
\begin{description}
\item[\commande{git clean}] Supprime les fichiers non suivis du répertoire de travail
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-xdf}] Combinaison pour supprimer du répertoire de travail les dossiers et fichiers non suivis
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{clone}
\begin{description}
\item[\commande{git clone <url du dépôt>}] Récupérer un dépôt git depuis une source distante
\end{description}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{commit}
\begin{description}
\item[\commande{git commit}] Créer un commit à partir du contenu de l'index
\end{description}
\skbinput[from=fig]{apps/git_commande_commit}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-a}] Court-circuiter l'index en intégrant au commit les modifications des fichiers suivis dans le répertoire de travail
\item[\commande{--amend}] Modifier le dernier commit
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{diff}
\begin{description}
\item[\commande{git diff}] Afficher la différence entre deux états (entre le répertoire de travail ou l'index et la branche par exemple)
\end{description}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,13 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{checkout}
\begin{description}
\item[git fetch] Mettre à jour la copie locale d'un dépôt distant
\end{description}
\skbinput[from=fig]{apps/git_commande_fetch}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[-all] Mettre à jour les copies locales de tous les dépôts distants configurés
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,13 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{filter-branch}
\begin{description}
\item[\commande{git filter-branch}] Exécuter une commande sur un ensemble de commit
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--tree-filter}] Modifier le contenu de l'arborescence pour chaque version du projet
\item[\commande{--env-filter}] Modifier la teneur des variables d'environnement pour chaque commit
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{grep}
\begin{description}
\item[\commande{git grep}] Rechercher dans chaque fichier d'un arbre quelconque
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--break}] Sépare les résultats pour une meilleure lisibilité
\item[\commande{--heading}] Donne le contexte du résultat
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{init}
\begin{description}
\item[\commande{git init}] Convertir le dossier courant en dépôt git
\end{description}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{log}
\begin{description}
\item[\commande{git log}] Afficher une liste de commit
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-L}] Retracer l'historique d'un morceau de code
\item[\commande{<c1>..<c2>}] Lister les commit accessibles depuis c2 mais pas c1
\item[\commande{<c1>...<2>}] Lister les commit accessibles depuis l'un ou l'autre mais pas des deux à la fois
\item[\commande{--not Ref}] Lister les commit qui ne sont pas accessibles depuis Ref
\end{description}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{ls-files}
\begin{description}
\item[\commande{git ls-files}] Afficher les informations sur les fichiers de l'index et du répertoire de travail.
\end{description}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{merge}
\begin{description}
\item[\commande{git merge}] Intégrer les commit d'une branche à une autre
\end{description}
%\skbinput[from=fig]{apps/git_commande_merge}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Pour faire machine arrière lors d'un merge manuel
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{pull}
\begin{description}
\item[\commande{git pull}] Synchroniser une branche locale avec la branche distante
\end{description}
\skbinput[from=fig]{apps/git_commande_pull}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--rebase}] Choisir la stratégie rebase pour incorporer les changements (équivalent à la succession des commandes \commande{fetch} et \commande{rebase})
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{push}
\begin{description}
\item[\commande{git push}] Synchroniser une branche distante avec une branche locale
\end{description}
\skbinput[from=fig]{apps/git_commande_push}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--tags}] Pousser les tags locaux sur le dépôt distant
\item[\commande{--all}] Pousser toutes les branches
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{rebase}
\begin{description}
\item[\commande{git rebase}] Rejouer les modifications après mise à jour de la branche
\end{description}
%\skbinput[from=fig]{apps/git_commande_rebase}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-i}] Réordonner les modifications manuellement
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{reset}
\begin{description}
\item[\commande{git reset}] Revenir à une version antérieure
\end{description}
%\skbinput[from=fig]{apps/git_commande_reset}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--hard}] Écraser le contenu du répertoire de travail et de l'index
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{revert}
\begin{description}
\item[\commande{git revert}] Créer le commit annulant un autre commit
\end{description}
%\skbinput[from=fig]{apps/git_commande_revert}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Interrompre le traitement
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{show}
\begin{description}
\item[\commande{git show}] Afficher la description d'un commit
\end{description}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{status}
\begin{description}
\item[\commande{git status}] Afficher le statut du répertoire de travail, et de l'index relativement à la branche
\end{description}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Commandes git}
\framesubtitle{tag}
\begin{description}
\item[\commande{git tag}] Gérer les étiquettes attachées à un commit
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-l}] Lister les étiquettes (éventuellement correpondant à un motif)
\item[\commande{-a}] Annoter l'étiquette
\item[\commande{-s}] Signer l'étiquette
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,33 @@
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{alias}
Les alias sont des raccourcis gérés pas git.
\commande{git config alias.<nom de l'alias> "<commande>"}
\begin{exampleblock}{Nature des commandes}
Les commandes peuvent aussi bien être des options et sous-commandes de git que des commandes externes accessibles au shell.
\end{exampleblock}
\end{frame}
\begin{frame}[fragile]
\frametitle {Ergonomie}
\framesubtitle{Exemples d'alias}
\begin{minted}[fontsize=\tiny]{ini}
[alias]
co = checkout
st = status
fe = fetch
lo = log --oneline
re = reset --hard HEAD~1
br = branch
mnf = merge --no-ff
sw = checkout @{-1}
lu = log ..@{upstream}
luo = log --oneline ..@{upstream}
ul=log @{upstream}..HEAD
ulo=log --oneline @{upstream}..HEAD
cslt = !git describe --long --first-parent | awk -F'/' '{print $NF}' | awk -F'-' '{print $(NF-1)}'
clf = !git lo --no-merges $(git lo -1 --pretty=format:"%h" debian/changelog)..
\end{minted}
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Interface}
\begin{itemize}
\item \commande{git config --global core.editor "vim"}
\item \commande{git config --global core.pager "less"}
\item \commande{git config --global color.ui auto}
\end{itemize}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,47 @@
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks}
Les hooks sont des actions déclenchées par des évènements concernant le dépôt git.
\begin{exampleblock}{}
Les hooks sont des scripts exécutables (pas de langage imposé) posés dans le dossier .git/hooks.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks pour le client}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item pre-commit
\item prepare-commit-msg
\item commit-msg
\item post-commit
\item applypatch-msg
\item preapply-patch
\item postapply-patch
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item pre-rebase
\item post-rewrite
\item post-checkout
\item post-merge
\item pre-push
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks pour le serveur}
\begin{itemize}
\item pre-receive
\item update
\item post-receive
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Configurer git}
\framesubtitle{Une configuration souple}
\begin{itemize}
\item configuration globale
\item configuration par dépôt
\end{itemize}
\end{frame}

View File

@ -0,0 +1,16 @@
\begin{frame}[fragile]
\frametitle{Ergonomie}
\framesubtitle{bash}
\begin{minted}{bash}
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="auto"
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
\end{minted}
\begin{exampleblock}{git-prompt}
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Configurer git}
\framesubtitle{Identifier l'utilisateur}
git associe à chaque commit des informations sur la personne ayant commité et sur la personne ayant mergé le commit.
\begin{itemize}
\item \commande{git config --global user.name "<nom d'utilisateur>"}
\item \commande{git config --global user.email "<courriel>"}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,6 @@
\begin{frame}
\frametitle{Décentralisé}
\begin{description}
\item[DVCS] Système de gestion de version décentralisé
\end{description}
\end{frame}

View File

@ -0,0 +1,12 @@
\begin{frame}
\frametitle{Les trois états des fichiers}
\begin{itemize}
\item non-suivi (avec la variante ignoré)
\item suivi :
\begin{itemize}
\item non modifié (par rapport au dernier état archivé)
\item modifié (par rapport au dernier état archivé)
\item sélectionné pour être archivé
\end{itemize}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Exercices}
\framesubtitle{Configuration globale de git}
Les paramètres de l'application git peuvent être globaux ou propres à un dépôt.
L'ergonomie, l'identité, les alias sont souvent les mêmes pour tous les dépôts.
La première étape consiste généralement à renseigner ces paramètres.
Le premier exercice consiste donc à renseigner un minimum de ces variables globales.
\end{frame}

View File

@ -0,0 +1,38 @@
\begin{frame}
\frametitle{Mise en place}
\framesubtitle{Identité de l'utilisateur}
\begin{itemize}
\item \commande{git config --global user.name "<nom de l'utilisateur>"}
\item \commande{git config --global user.email "<courriel de l'utilisateur>"}
\end{itemize}
\begin{exampleblock}{En cas d'oubli}
\commande{git} émet un avertissement lors du premier commit si ces variables ne sont pas renseignées.
Il est possible de corriger cet oubli facilement si les commit n'ont pas encore été partagés.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Mise en place}
\framesubtitle{Ergonomie}
\begin{itemize}
\item \commande{git config --global color.ui auto}
\item \commande{git config --global core.editor "<éditeur de texte à utiliser>"}
\item \commande{git config --global core.pager "<pager>"}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Mise en place}
\framesubtitle{Ergonomie (GNU/Linux)}
\begin{minted}{bash}
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="auto"
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
\end{minted}
\begin{exampleblock}{git-prompt}
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,14 @@
\begin{frame}
\frametitle{Exercices}
\framesubtitle{Initialiser un dépôt}
Un dépôt git peut être amorcé de différentes façons selon le contexte.
\begin{itemize}
\item le dépôt existe déjà en \emph{distant} :
\begin{itemize}
\item le dépôt distant est déjà au format git ;
\item le dépôt distant est géré par un autre scm ;
\end{itemize}
\item un répertoire local doit être converti en dépôt git ;
\end{itemize}
L'exercice propose la création d'un dépôt suivant ces différents contextes.
\end{frame}

View File

@ -0,0 +1,21 @@
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Récupérer le dépôt git distant en ssh}
Le serveur de dépôt de test propose un dépôt par groupe.
\commande{git clone ssh://gogs@<adresse\_serveur>/formation/<groupe>}
\end{frame}
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Récupérer le dépôt git distant en https}
L'accès au serveur est aussi permis en http(s)
\commande{git clone http://<adresse\_serveur>:3000/formation/<groupe>}
\end{frame}
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Convertir le dossier local en dépôt git}
N'importe quelle répertoire peut être converti en dépôt git.
\commande{git init}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Avoir des dépôts distants en référence}
Les dépôts distants sont un aspect important du fonctionnement d'un SCM décentralisé.
git permet d'associer plusieurs dépôts distants à un dépôt local et de renseigner à quelle branche de quel dépôt distant une branche locale doit se référer.
Le présent exercice aborde la mise en place de tels liens entre branches locales et branches distantes.
\end{frame}

View File

@ -0,0 +1,31 @@
\begin{frame}
\frametitle{Associer les dépôts distants}
\framesubtitle{Ajouter un dépôt distant}
\commande{git remote add <nom> <protocole>://[<utilisateur>@]<adresse>[:port]/<chemin>}
Exemples :
\begin{itemize}
\item \commande{git remote add formation ssh://gogs@localhost:3000/formation/exercices.git}
\item \commande{git remote add formation http://gogs@localhost:3000/formation/exercices.git}
\end{itemize}
\begin{exampleblock}{Vérification}
Les dépôts distants configurés peuvent être listés avec :
\begin{itemize}
\item \commande{git remote} pour la version sobre ou
\item \commande{git remote -v} pour plus de détails.
\end{itemize}
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Associer les dépôts distants}
\framesubtitle{Observer une branche distante}
Pour une branche distante existante :
\begin{itemize}
\item \commande{git branch --set-upstream-to=<nom\_dépôt\_distant>/<branche\_distante>}
\end{itemize}
Pour une branche distante inexistante :
\begin{itemize}
\item \commande{git push --set-upstream <nom\_dépôt\_distant> <branche\_locale>}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Premier commit}
Le premier commit est toujours le plus facile. Pas de conflit à attendre, pas de stress…
Cet exercice permet de revoir le fonctionnement des \emph{arbres} de git avec l'ajout d'un simple fichier dans un dossier.
\end{frame}

View File

@ -0,0 +1,138 @@
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Dépôt vide}
Au démarrage, est un dépôt vide :
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Et pourtant…}
\begin{columns}
\begin{column}{0.5\textwidth}
L'initialisation consiste en la création du dossier .git :
\end{column}
\begin{column}{0.5\textwidth}
\begin{minted}[fontsize=\tiny]{bash}
.
└── .git
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
├── heads
└── tags
\end{minted}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un dossier}
\commande{mkdir doc}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un dossier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
\end{minted}
\begin{exampleblock}{}
git ne prend en considération que le contenu des fichiers.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{touch doc/README}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
doc/
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents
(utilisez "git add" pour les suivre)
\end{minted}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git add .}
\skbinput[from=fig]{apps/git_commande_add}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
Modifications qui seront validées :
(utilisez "git rm --cached <fichier>..." pour désindexer)
nouveau fichier : doc/README
\end{minted}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git commit -m "Ajout du premier fichier."}
\skbinput[from=fig]{apps/git_commande_commit}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
rien à valider, la copie de travail est propre
\end{minted}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Gérer son répertoire de travail}
Le répertoire de travail est la vue du dépôt la plus facile à prendre en main dans un dépôt git.
Cet exercice a pour but de bien maîtriser les quatre états des fichiers dans un dépôt git : non-suivi, suivi et identique au contenu de l'index, suivi et différent et enfin, suivi, différent et selectionné pour archivage.
La difficulté majeure, à ce stade, est de toujours contrôler les passages d'état pour ne pas archiver un fichier indésirable par exemple.
\end{frame}

View File

@ -0,0 +1,115 @@
\begin{frame}
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Créer un fichier}
\commande{echo "userA userApwd" > password}
\end{frame}
\begin{frame}
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Modifier un fichier}
Ajouter du texte au fichier doc/README
\end{frame}
\begin{frame}[fragile]
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Admirer la complexité de la situation}
\commande{git status}
\begin{minted}[fontsize=\tiny]{console}
Sur la branche master
Modifications qui seront validées :
(utilisez "git reset HEAD <fichier>..." pour désindexer)
modifié : doc/README
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
password
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Gérer son répertoire de travail}
\framesubtitle{À la croisée des chemins}
Associer les commandes suivantes :
\begin{columns}
\begin{column}{.3\textwidth}
\tiny{\commande{git add .}}
\tiny{\commande{git commit -m "Tout de go"}}
\end{column}
\begin{column}{.3\textwidth}
\tiny{\commande{git commit -am "Implicite"}}
\end{column}
\begin{column}{.3\textwidth}
\tiny{\commande{git add doc/README}}
\tiny{\commande{git commit -m "Explicite"}}
\end{column}
\end{columns}
aux résultats suivants :
\begin{columns}
\begin{column}{.3\textwidth}
\begin{minted}[fontsize=\tiny,breaklines,frame=single]{console}
Sur la branche master
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
password
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)
\end{minted}
\end{column}
\begin{column}{.3\textwidth}
\begin{minted}[fontsize=\tiny,breaklines,frame=single]{console}
Sur la branche master
rien à valider, la copie de travail est propre
\end{minted}
\end{column}
\begin{column}{.3\textwidth}
\begin{minted}[fontsize=\tiny,breaklines,frame=single]{console}
Sur la branche master
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
password
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)
\end{minted}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Parer les erreurs prévisibles}
\commande{echo "password" > .gitignore}
\commande{git add .gitignore}
\commande{git commit -m "Filtre de fichier à ne pas suivre"}
\end{frame}
\begin{frame}[fragile]
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Laisser sur le côté de la route}
\commande{git status}
\begin{minted}[fontsize=\tiny]{console}
Sur la branche master
rien à valider, la copie de travail est propre
\end{minted}
\end{frame}
\begin{frame}
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Et s'il est trop tard ?}
\commande{git reset HEAD\~{}1}
\end{frame}
\begin{frame}
\frametitle{Gérer son répertoire de travail}
\framesubtitle{Recueil de .gitignore}
Des .gitignore adaptés à différents contextes sont faciles à obtenir sur l'Internet.
\url{https://github.com/github/gitignore}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Utiliser les branches}
Les branches sont faciles à créer et détruire dans un dépôt git.
Cela en fait un outil de choix pour l'organisation du développement.
L'exercice suivant aborde les manipulations de base avec les branches.
\end{frame}

View File

@ -0,0 +1,219 @@
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Créer une branche}
On créé une branche qui contiendra le fichier password.
\commande{git checkout -b branche\_indiscrete}
équivalent de la succession de commandes :
\begin{enumerate}
\item \commande{git branch branche\_indiscrete}
\item \commande{git checkout branche\_indiscrete}
\end{enumerate}
\begin{tikzpicture}
\gitDAG[grow right sep = 1em]{
A -- B};
\gitbranch{master}{above=of B}{B}
\gitHEAD{above=of master}{master}
\end{tikzpicture}
\begin{tikzpicture}
\gitDAG[grow right sep = 1em]{
A -- B};
\gitbranch{master}{above=of B}{B}
\gitHEAD{above=of master}{master}
\gitbranch[brindis]{brancheindiscrete}{below=of B}{B}
\end{tikzpicture}
\begin{tikzpicture}
\gitDAG[grow right sep = 1em]{
A -- B};
\gitbranch{master}{above=of B}{B}
\gitbranch[brindis]{brancheindiscrete}{below=of B}{B}
\gitHEAD{below=of brindis}{brindis}
\end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\frametitle{Aparté}
\commande{git add password}
\commande{git commit -m "le fichier indésirable"}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\frametitle{Aparté}
\commande{git log master..branche\_indiscrete}
\commande{git log master..}
\commande{git reflog}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Merge}
\commande{git checkout master}
\commande{git branch merge/automatique}
\commande{git branch merge/conflit}
\commande{git branch merge/rebase}
% \begin{tikzpicture}
% \gitDAG[grow down sep = 1em]{
% A -- B};
% \gitbranch{master}{left=of B}{B}
% \gitHEAD{left=of master}{master}
% \gitbranch[auto]{merge/automatique}{right=of master}{B}
% \gitbranch[conflit]{merge/conflit}{right=of auto}{B}
% \gitbranch[rebase]{merge/rebase}{right=of conflit}{B}
% \end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Merge}
\commande{git checkout merge/automatique}
\commande{cp doc/README\{,.md\}}
\commande{git add doc/}
\commande{git commit -m "Copie du fichier"}
% \begin{tikzpicture}
% \gitDAG[grow down sep = 1em]{
% A -- B --{C}};
% \gitbranch{master}{right=of B}{B}
% \gitHEAD{left=of auto}{auto}
% \gitbranch[auto]{merge/automatique}{left=of C}{C}
% \gitbranch[conflit]{merge/conflit}{right=of master}{B}
% \gitbranch[rebase]{merge/rebase}{right=of conflit}{B}
% \end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Merge}
\commande{git checkout merge/conflit}
Édition du fichier doc/README
\commande{git commit -am "Des ennuis en perspective"}
% \begin{tikzpicture}
% \gitDAG[grow down sep = 1em]{
% A -- B --{C, D}};
% \gitbranch{master}{right=of B}{B}
% \gitHEAD{left=of conflit}{conflit}
% \gitbranch[auto]{merge/automatique}{right=of C}{C}
% \gitbranch[conflit]{merge/conflit}{left=of D}{D}
% \gitbranch[rebase]{merge/rebase}{right=of master}{B}
% \end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Merge}
\commande{git checkout merge/rebase}
Édition du fichier doc/README
\commande{git commit -am "Des ennuis en perspective"}
% \begin{tikzpicture}
% \gitDAG[grow right sep = 1em]{
% A -- B --{C, D, E}};
% \gitbranch{master}{above=of B}{B}
% \gitHEAD{above=of rebase}{rebase}
% \gitbranch[auto]{merge/automatique}{above=of C}{C}
% \gitbranch[conflit]{merge/conflit}{above=of D}{D}
% \gitbranch[rebase]{merge/rebase}{above=of E}{E}
% \end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Merge}
\commande{git checkout master}
Édition du fichier doc/README pour ajouter des alias
\commande{git commit -am "Des ennuis en perspective"}
Pour chaque branche merge/*, tenter la commande :
\commande{git merge merge/<nom>}
\end{frame}
\begin{frame}
\frametitle{Utiliser les branches}
\framesubtitle{Rebase}
\commande{git checkout merge/rebase}
\commande{git rebase master}
% \begin{tikzpicture}
% \gitDAG[grow down sep = 1em]{
% A -- B --{C, D, E'}};
% \gitbranch{master}{right=of B}{B}
% \gitHEAD{left=of rebase}{rebase}
% \gitbranch[auto]{merge/automatique}{right=of C}{C}
% \gitbranch[conflit]{merge/conflit}{right=of D}{D}
% \gitbranch[rebase]{merge/rebase}{left=of E'}{E'}
% \end{tikzpicture}
\end{frame}
% \begin{tikzpicture}
% % Commit DAG
% \gitDAG[grow right sep = 2em]{
% A -- B -- {
% C,
% D -- E,
% }
% };
% % Tag reference
% \gittag
% [v0p1] % node name
% {v0.1} % node text
% {above=of A} % node placement
% {A} % target
% % Remote branch
% \gitremotebranch
% [origmaster] % node name
% {origin/master} % node text
% {above=of C} % node placement
% {C} % target
% % Branch
% \gitbranch
% {master} % node name and text
% {above=of E} % node placement
% {E} % target
% % HEAD reference
% \gitHEAD
% {above=of master} % node placement
% {master} % target
% \end{tikzpicture}
% \begin{tikzpicture}
% \gitDAG[grow right sep = 2em]{
% A -- B -- {
% C -- D' -- E',
% {[nodes=unreachable] D -- E },
% }
% };
% % Tag reference
% \gittag
% [v0p1] % node name
% {v0.1} % node text
% {above=of A} % node placement
% {A} % target
% % Remote branch
% \gitremotebranch
% [origmaster] % node name
% {origin/master} % node text
% {above=of C} % node placement
% {C} % target
% % Branch
% \gitbranch
% {master} % node name and text
% {above=of E'} % node placement
% {E'} % target
% % HEAD reference
% \gitHEAD
% {above=of master} % node placement
% {master} % target
% \SAandWT
% \end{tikzpicture}

View File

@ -0,0 +1,11 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Inspection générale}
Un historique de code n'a d'intérêt que si le besoin de connaître les actions
qui ont mené à un état se fait sentir.
git met à disposition divers outils pour inspecter l'historique.
Cet exercice se propose de présenter certains de ces outils.
Cet exercice s'appuie sur le contenu du dépôt git \emph{exercices} fourni.
\end{frame}

View File

@ -0,0 +1,132 @@
\begin{frame}
\frametitle{Inspection}
\framesubtitle{log}
Comparer les branches du dépôt \emph{exercices} en explorant les différentes options de git log (--graph, --all, --decorate, .., ...)
\commande{git log}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{log}
\begin{tikzpicture}
\begin{pgflowlevelscope}{\pgftransformscale{0.5}}
\gitDAG[grow right sep=1em]{
fcacc8a -- a3a980c -- {6d7f839 -- {d221665 -- 841f693 -- f5965df -- a12f94b -- 5464ee7, fe0c2b7 -- 6212e29 -- 0f13577 -- a60f3ed, f81ca5c, 7e54de0},
30a5821, b13bcf2, 902ae87}
};
\gitbranch
{master}
{above=of 6d7f839}
{6d7f839}
\gitbranch
{brancheindiscrete}
{right=of 902ae87}
{902ae87}
\gitbranch
{merge/conflit}
{right=of 30a5821}
{30a5821}
\gitbranch
{merge/automatique}
{right=of b13bcf2}
{b13bcf2}
\gitbranch
{merge/rebase}
{right=of 7e54de0}
{7e54de0}
\gitbranch
{branche/perdue}
{right=of f81ca5c}
{f81ca5c}
\gitbranch
{branche/minee}
{above=of 5464ee7}
{5464ee7}
\gitbranch
{histoire/confuse}
{right=of a60f3ed}
{a60f3ed}
\end{pgflowlevelscope}
\end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{bisect}
\begin{minipage}{\textwidth}
\begin{tikzpicture}
%\begin{pgflowlevelscope}{\pgftransformscale{0.5}}
\begin{pgflowlevel}{\pgftransformscale{0.6}}
\gitDAG[grow right sep=1em]{
fcacc8a -- a3a980c -- {6d7f839 -- {d221665 -- 841f693 -- f5965df -- a12f94b -- 5464ee7}}
};
\gitbranch
{master}
{above=of 6d7f839}
{6d7f839}
\gitbranch
{branche/minee}
{above=of 5464ee7}
{5464ee7}
%\end{pgflowlevelscope}
\end{pgflowlevel}
\end{tikzpicture}
\end{minipage}
La branche minee schématise une situation dans laquelle un dysfonctionnement a été introduit mais pas détecté
aussitôt.
Un script \emph{test.sh} a été ajouté pour simuler le test du code.
Il retourne \emph{0} lorsque le code est bon, \emph{1} lorsque le code est mauvais.
L'exercice consiste donc à utiliser la commande \commande{git bisect} pour repérer le commit ayant introduit l'erreur, c'est-à-dire à partir duquel le script retourne \emph{1}.
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{bisect}
Conditions de départ :
\begin{itemize}
\item dernier \emph{commit} de la branche \emph{branche/minee}
\item dernier état du code fonctionnel : dernier \emph{commit} de la branche \emph{master}.
\end{itemize}
\begin{enumerate}[<+->]
\item \commande{git checkout branche/minee}
\item \commande{git bisect start} \# démarrage de la session de recherche
\item \commande{git bisect bad} \# déclaration de l'état du dernier \emph{commit}
\item \commande{git bisect good \$(git log --oneline -1 --format=\%h master)} \# déclaration du dernier état fonctionnel connu
\end{enumerate}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{bisect}
À chaque déplacement contrôlé par \commande{git bisect}, exécuter \emph{test.sh} et indiquer si l'état est fonctionnel :
\commande{./test.sh; [[ \$? -eq 0 ]] \&\& git bisect good || git bisect bad}
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{bisect}
\commande{a12f94b62f617417f4b1f8c5317bc2f033c92f5a is the first bad commit}
Terminer la session de recherche :
\commande{git bisect reset}
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{blame}
La conclusion précédente, vu la simplicité du code en cause, aurait pu être tirée grâce à \commande{git blame} et \commande{git log}.
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Inspection}
\framesubtitle{blame}
\begin{itemize}
\item \commande{git blame test.sh}
\item \commande{git log -S"exit 1" test.sh}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Travail collaboratif}
En fait de travail collaboratif, chacun peut facilement personnifier l'enfer pour ses collègues.
L'exercice suivant propose de nettoyer son dépôt personnel avant de le rendre public.
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,156 @@
\begin{frame}
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
\begin{minipage}{\textwidth}
\begin{tikzpicture}
%\begin{pgflowlevelscope}{\pgftransformscale{0.5}}
\begin{pgflowlevel}{\pgftransformscale{0.6}}
\gitDAG[grow right sep=1em]{
fcacc8a -- a3a980c -- {6d7f839 -- {fe0c2b7 -- 6212e29 -- 0f13577 -- a60f3ed}}
};
\gitbranch
{master}
{above=of 6d7f839}
{6d7f839}
\gitbranch
{histoire/confuse}
{above=of a60f3ed}
{a60f3ed}
%\end{pgflowlevelscope}
\end{pgflowlevel}
\end{tikzpicture}
\end{minipage}
Le scénario proposé pour le nettoyage s'appuie sur la branche \emph{histoire/confuse}.
Les \emph{commit} n'y sont pas cohérents : mélange de corrections syntaxiques, orthographiques et grammaticales.
Le but est de redonner de la lisibilité à l'historique du dépôt en le réécrivant à l'aide de \commande{git rebase -i} et \commande{git add -i}.
\end{frame}
\begin{frame}
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
\begin{enumerate}[<+->]
\item \commande{git checkout histoire/confuse}
\item \commande{git show master..} \# aperçu des modifications à réorganiser
\item \commande{git rebase -i \$(git merge-base --fork-point master)} \# rebase de tous les commits depuis la divergence avec la branche \emph{master}
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
À l'origine :
\begin{minted}[fontsize=\tiny]{console}
pick fe0c2b7 Commit un peu rapide.
pick 6212e29 Premier commit de correction
pick 0f13577 Deuxième commit de correction
pick a60f3ed Troisième et dernier (on espère) commit de correction
\end{minted}
Ce qu'on veut faire :
\begin{itemize}
\item un \emph{commit} pour les espaces superflues (0f13577 et 6212e29)
\item un \emph{commit} pour l'orthographe et la grammaire (0f13577, a60f3ed et 6212e29)
\item un \emph{commit} pour le contresens
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
\begin{enumerate}[<+->]
\item s'arrêter sur le \emph{commit} 6212e29 et répartir les modifications sur trois \emph{commit}
\item s'arrèter sur le \emph{commit} 0f13577 et répartir les modifications sur deux \emph{commit}
\item reformuler le message du \emph{commit} a60f3ed
\end{enumerate}
\begin{minted}[fontsize=\tiny]{console}
pick fe0c2b7 Commit un peu rapide.
e 6212e29 Premier commit de correction
e 0f13577 Deuxième commit de correction
r a60f3ed Troisième et dernier (on espère) commit de correction
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
Pour chaque \emph{commit} édité :
\begin{enumerate}[<+->]
\item \commande{git reset HEAD\~{}1}
\item \commande{git add -i}
\item \commande{patch} et sélection du fichier à éditer
\item validation, refus ou édition du fragment de patch
\item sortie du mode patch
\item \commande{git add doc/README} suivi de \commande{git commit}
\item si il n'y a plus de modifications, \commande{git rebase --continue}, sinon, retour à l'étape 2
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
\begin{minted}[fontsize=\tiny]{console}
f500056 Corrections orthographiques et grammaticales
a11256a Suppression des espaces superflues
1a03003 Corrections orthographiques et grammaticales
f48a802 Corrections orthographiques et grammaticales
9ed1adb Suppression des espaces superflues
7236369 Correction du contresens
fe0c2b7 Commit un peu rapide.
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
Prêt pour la seconde passe.
\begin{minted}[fontsize=\tiny]{console}
pick fe0c2b7 Commit un peu rapide.
pick 7236369 Correction du contresens
pick 9ed1adb Suppression des espaces superflues
s a11256a Suppression des espaces superflues
pick f48a802 Corrections orthographiques et grammaticales
s 1a03003 Corrections orthographiques et grammaticales
s f500056 Corrections orthographiques et grammaticales
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
Prêt pour la seconde passe.
\begin{minted}[fontsize=\tiny]{console}
f7caf4b Corrections orthographiques et grammaticales
cdcf39e Suppression des espaces superflues
7236369 Correction du contresens
fe0c2b7 Commit un peu rapide.
\end{minted}
\end{frame}
\begin{frame}
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
Évidemment, dans la situation décrite, peu de modifications mais imbriquées, un résultat équivalent mais plus rapidement obtenu avec :
\begin{enumerate}[<+->]
\item \commande{git reset \$(git merge-base --fork-point master)}
\item \commande{git add -i}
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Travail collaboratif}
\framesubtitle{Nettoyage}
\begin{minipage}{\textwidth}
\begin{tikzpicture}
%\begin{pgflowlevelscope}{\pgftransformscale{0.5}}
\begin{pgflowlevel}{\pgftransformscale{0.6}}
\gitDAG[grow right sep=1em]{
fcacc8a -- a3a980c -- {902ae87}
};
\gitbranch
{brancheindiscrete}
{above=of 902ae87}
{902ae87}
%\end{pgflowlevelscope}
\end{pgflowlevel}
\end{tikzpicture}
\end{minipage}
Il ne reste plus qu'à purger les \emph{commit} de tous les fichiers embarrassants, ajoutés par inadvertance.
\begin{enumerate}[<+->]
\item \commande{git checkout branche\_indiscrete}
\item \commande{git filter-branch --tree-filter "git rm password" master..}
\end{enumerate}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Travail collaboratif}
\framesubtitle{Partager}
Reprendre les exercices en incluant les commandes push, pull et fetch.
Côté serveur, tester les hooks.
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,4 @@
\begin{frame}
\frametitle{}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Exercice}
\framesubtitle{Intégration dans les processus}
git est intégré dans divers processus, notamment les processus de packaging.
Cet exercice donne un aperçu d'une telle intégration dans le cas du packaging debian.
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,35 @@
\begin{frame}
\frametitle{Packaging debian}
\framesubtitle{buildpackage}
buildpackage regroupe les outils simplifiant le packaging debian basé sur des sources maintenues en dépôts git.
\commande{apt-get install git-buildpackage}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Packaging debian}
\framesubtitle{patchs}
gbp-pq est la commande permettant de faire correspondre les commit d'une branche aux patchs d'un paquet.
Depuis la branche de packaging :
\commande{gbp-pq import}
Après modification du code et organisation en commit :
\commande{gbp-pq export}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Packaging debian}
\framesubtitle{changelog}
git dch permet d'automatiser l'écriture du changelog en se basant sur les commit.
\commande{git dch}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Packaging debian}
\framesubtitle{description du paquet}
Finalement, git buildpackage produit les fichiers nécessaires à la construction du paquet : .dsc, archive des sources, etc.
\commande{apt-get install git-buildpackage}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Installer git}
\framesubtitle{sur les systèmes d'exploitation GNU/Linux}
\begin{itemize}
\item apt-get, dnf, emerge, pacman, zypper, \ldots{}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Installer git}
\framesubtitle{sur les systèmes d'exploitation Apple}
\begin{itemize}
\item \url{http://git-scm.com/download/mac}
\item \url{https://mac.github.com/}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Installer git}
\framesubtitle{sur les systèmes d'exploitation Microsoft©}
\begin{itemize}
\item \url{http://git-scm.com/download/win}
\item \url{https://windows.github.com/}
\end{itemize}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Git en un mot}
\begin{itemize}
\item projet créé en 2005
\item sous licence GPLv2
\item gère le code source du noyau linux
\item est multiplateforme
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Références}
\begin{itemize}
\item \url{http://www.git-scm.com/docs}
\item Pro-git, S. Chacon et B. Straub, Apress, 2014
\item les pages de man : gitcore-tutorial, gitworkflows, gitcvs-migration
\end{itemize}
\end{frame}

View File

@ -0,0 +1,11 @@
\begin{frame}
\frametitle{Ce que cache le dépôt git}
\begin{description}[répertoire de travail]
\item[.git]<1-> Les objets et la configuration locale du dépôt git
\item[répertoire de travail]<2-> Une arborescence de fichiers accessible à l'édition, le bac à sable
\item[index]<3-> Les changements candidats à l'archivage
\item[HEAD]<4-> Le dernier état archivé
\item[stash]<5-> Une zone tampon pour les modifications à mettre momentanément de côté
\end{description}
\skbinput[from=fig]{apps/git_trees}
\end{frame}

View File

@ -0,0 +1,7 @@
\begin{frame}
\frametitle{Serveur de dépôts git}
\framesubtitle{Serveur basique ssh}
Ajout des clés des utilisateurs au fichier ~/.ssh/authorized\_keys de l'utilisateur administrant les dépôts.
Préciser l'utilisation d'un shell restreint, git-shell, pour limiter les droits (\commande{chsh git /usr/bin/git-shell}).
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Serveur de dépôts git}
\framesubtitle{GitLab}
Application combinant un serveur de dépôts git avec une interface web conviviale.
\begin{itemize}
\item Gestion des utilisateurs
\item Navigation dans les dépôts
\item Gestion des évènements git et web
\end{itemize}
\end{frame}

View File

@ -0,0 +1,11 @@
\begin{frame}
\frametitle{Serveur de dépôts git}
\framesubtitle{gitolite}
Application de gestion de dépôts git sans interface graphique
\begin{itemize}
\item Gestion des utilisateurs
\item Accès par ssh
\item Gestion fine des droits
\item Gestion sous la forme d'un dépôt git
\end{itemize}
\end{frame}

View File

@ -0,0 +1,10 @@
\begin{frame}
\frametitle{Serveur de dépôts git}
\framesubtitle{Gogs}
Application combinant un serveur de dépôts git avec une interface web conviviale.
\begin{itemize}
\item Gestion des utilisateurs
\item Navigation dans les dépôts
\item Gestion des évènements git et web
\end{itemize}
\end{frame}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Des branches pour étayer le tronc}
\begin{itemize}
\item maintenir l'histoire du code lisible
\item faciliter les divergences
\item éphémères ou pérennes
\end{itemize}
\end{frame}

View File

@ -0,0 +1,9 @@
\begin{frame}
\frametitle{Un processus bien documenté}
\begin{description}
\item[git-flow] une démarche de développement tirant parti des capacités de git.
\end{description}
\begin{exampleblock}{}
\small{\url{http://nvie.com/posts/a-successful-git-branching-model/}}
\end{exampleblock}
\end{frame}

View File

@ -0,0 +1,15 @@
\begin{frame}
\frametitle{Processus de Vincent Driessen}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item Des branches \emph{master} et \emph{develop} pour le code fonctionnel
\item Des branches pour les développements en cours
\item Un circuit entre les branches bien fléché
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\skbfigure[center, figure, caption=Vincent Driessen CC-by-sa, height=0.5\textheight]{scm/git-model@2x.png}
\end{column}
\end{columns}
\end{frame}

View File

@ -0,0 +1,12 @@
\skbheading{Équipements personnels utilisés}
Utilisez-vous des équipements personnels (smartphone, ordinateur) ?
\ChoiceMenu[radio,radiosymbol=\ding{52},name=utilisation_equipement_personnel]{}{oui}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=utilisation_equipement_personnel]{}{non}
Si vous avez répondu oui à la question précédente, pourquoi utilisez-vous un équipement personnel ?
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par commodité}
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par obligation}
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par nécessité}

View File

@ -0,0 +1,2 @@
\skbheading{equipement\_personnel\_utilises\_oui\_non.tex}
fichier content/questions/equipement/equipement\_personnel\_utilises\_oui\_non.tex à éditer

View File

@ -0,0 +1,12 @@
\skbheading{Équipements utilisés}
Utilisez-vous plusieurs équipements (smartphone, ordinateur) ?
\ChoiceMenu[radio,radiosymbol=\ding{52},name=utilisation_equipement_personnel]{}{oui}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=utilisation_equipement_personnel]{}{non}
Si vous avez répondu oui à la question précédente, pourquoi utilisez-vous plusieurs équipements ?
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par commodité}
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par obligation}
\ChoiceMenu[bordercolor=CadolesBlue,radio,radiosymbol=\ding{52},name=pourquoi_equipement_personnel]{}{par nécessité}

View File

@ -0,0 +1,9 @@
\skbheading{Type daccès aux services numériques}
Depuis quel endroit avez-vous accès aux services numériques ?
\begin{center}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=ou_service]{}{depuis mon établissement}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=ou_service]{}{depuis mon domicile}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=ou_service]{}{depuis les deux}
\end{center}

View File

@ -0,0 +1,2 @@
\skbheading{attentes\_ameliorations.tex}
fichier content/questions/services/attentes\_ameliorations.tex à éditer

Some files were not shown because too many files have changed in this diff Show More