Compare commits
323 Commits
2a39b88df1
...
skb
Author | SHA1 | Date | |
---|---|---|---|
f8d678994b | |||
356a0a9689 | |||
00ff5356c9 | |||
f9b473a7d9 | |||
dc5480785e | |||
8f3d52eaee | |||
156d34e91e | |||
510129b96e | |||
e940a629d8 | |||
318c24f60b | |||
d27cbaf6ce | |||
6223b6b0f7 | |||
7333bd2ad6 | |||
5e6aac0afd | |||
ee40013d4f | |||
bfd37a48db | |||
7ff1621a09 | |||
757b8c9a1e | |||
10b957930f | |||
69392c851a | |||
5f623509c8 | |||
7ac1e75ec4 | |||
047e6bddf8 | |||
7fc315f0ad | |||
e79bdb1ff0 | |||
5b34655e4c | |||
ce9ee26e78 | |||
ddd71f3332 | |||
79a7a997bb | |||
525d75a3f6 | |||
893066181c | |||
dbb51ab930 | |||
ac59103f33 | |||
56c3c52fbb | |||
dbf61a7e4e | |||
b465d9156c | |||
165dd355e6 | |||
27c76de966 | |||
845ca0f67b | |||
97dd70b285 | |||
cfd94c08b6 | |||
0918bbb1bb | |||
1ba5a6d790 | |||
fede121bc4 | |||
f20ef936ce | |||
008090d721 | |||
0d286b85a0 | |||
323b4f6685 | |||
1418454c18 | |||
10485c94f1 | |||
f5356e2e41 | |||
b7f40beda0 | |||
00c308cca6 | |||
675ad0fb70 | |||
68a2e82bf2 | |||
bf25f8b140 | |||
506d99e91b | |||
3998722c7f | |||
10e0f69dba | |||
13e4a95892 | |||
708bed3a16 | |||
1fd175b4c9 | |||
de6251fed3 | |||
4e4cf16e97 | |||
b975949318 | |||
8d6f44d938 | |||
3d295bac6e | |||
bcb396d40c | |||
1b1f48a0e3 | |||
f679c37468 | |||
20cbdeef8d | |||
34833d8186 | |||
3e85ca32a0 | |||
3d2afb8b17 | |||
7add972706 | |||
d3914eb51e | |||
050515bbe6 | |||
6fa95a6de9 | |||
4d1f3f73e1 | |||
c3e75343db | |||
a9dba3b3b6 | |||
c90015ab94 | |||
884905c1db | |||
312c465084 | |||
3eb9b8da29 | |||
a741a6b20e | |||
bef56bc3b4 | |||
23c84980a2 | |||
150ba9180a | |||
bde23f198d | |||
21fa68542c | |||
e65a11ae3b | |||
e92e905ec4 | |||
0bcbd982cb | |||
fc21384b39 | |||
4b9665c390 | |||
4db1f56cd6 | |||
894a252479 | |||
4a3107fd62 | |||
1d4ba95e00 | |||
2ed2488a47 | |||
b5b00ce4d3 | |||
bf45ad7859 | |||
a04519ca4a | |||
07b57d4515 | |||
98dd6eea17 | |||
14212752fc | |||
051c60fed6 | |||
116fe4fcab | |||
7954bdadad | |||
bf6fc81fd0 | |||
7973e2bfc8 | |||
ca20fc14f1 | |||
e4bc8d7263 | |||
450ad67479 | |||
6c1b3698ef | |||
a214ef0eda | |||
8918d71c0a | |||
a5dc1cce72 | |||
9dd4040359 | |||
26b808e5ad | |||
becb4ce2c9 | |||
07d685df35 | |||
6ffd056366 | |||
3e4e753cfb | |||
750d161159 | |||
778e98356a | |||
b80967a4f0 | |||
eeb73453e4 | |||
4b2a295589 | |||
43ff0af8a8 | |||
d994e6762b | |||
0d2e9732b3 | |||
baab6fdd1f | |||
9a03e5190d | |||
ca7c2df715 | |||
a375adbd45 | |||
ea52e31866 | |||
de3a902fc5 | |||
0f29f8442d | |||
018af24545 | |||
b98c46b4ae | |||
08495c6a07 | |||
07e85ce432 | |||
c225693e35 | |||
635b81422b | |||
175a8424f9 | |||
29e46e0e16 | |||
dcfe04bd9b | |||
90a02579ac | |||
c495caed08 | |||
eb3e054e8c | |||
c9f85c3355 | |||
cf04024d38 | |||
c23e306403 | |||
11c43df090 | |||
428dc25db2 | |||
7c62b61421 | |||
310d8021b4 | |||
141f4a12a7 | |||
57244e006e | |||
5420d0841b | |||
79eeb4a1df | |||
2dee810ffd | |||
75b80773cc | |||
bf2d772c1b | |||
65adac7ac9 | |||
11b2b9f935 | |||
b8bf37cafb | |||
a2711a778e | |||
6e3966418f | |||
f2e7a835f2 | |||
9a14db234b | |||
00a9217e47 | |||
97a8e6d31f | |||
287dc14656 | |||
5c2ec45681 | |||
a6f960e6bc | |||
f649769545 | |||
b988c5cc07 | |||
07d2fa69ed | |||
f5670a7321 | |||
fdfc702149 | |||
47fa14c1af | |||
859f2cdf1c | |||
55234742c5 | |||
3915b852d4 | |||
9579fbc662 | |||
a90179af53 | |||
2d4265308b | |||
be32ccce02 | |||
5f289978d7 | |||
30f8406457 | |||
19b2b206dc | |||
6adb6f614d | |||
836c70c346 | |||
c66700d016 | |||
103909fe15 | |||
99737bbc87 | |||
9f706ad27b | |||
603bbf6bf1 | |||
ce0578399d | |||
380bfe4356 | |||
c08cfd5492 | |||
bb68fc6067 | |||
0ad6ba087e | |||
e4c68538cf | |||
34aa40e3d9 | |||
09ed36f009 | |||
9d22aa4bb4 | |||
60b1491067 | |||
1bb3ebca56 | |||
259173dd27 | |||
8a577a72a3 | |||
fed6abb954 | |||
b4d14ffbcb | |||
341567b3d0 | |||
9e29ca6879 | |||
1cd8714020 | |||
c79cc823c5 | |||
38b317411a | |||
15f0448816 | |||
7157bb6725 | |||
27ac5aa3c5 | |||
71bed745c0 | |||
bff6fd0347 | |||
c59973e342 | |||
588a446ebd | |||
11205e7eae | |||
86a64f73ce | |||
9d50c05062 | |||
180780bfb3 | |||
d23f750963 | |||
792183c404 | |||
99539bfbe1 | |||
d6d8d34c83 | |||
4cd17235e5 | |||
dd4f04fa56 | |||
ad27c7704e | |||
5b42326506 | |||
a5c3e0bf29 | |||
6f69f127b9 | |||
8a8d2c1d52 | |||
8ea173ab17 | |||
cbecfcbc23 | |||
7b99d805c6 | |||
78acdb5816 | |||
122ae1e085 | |||
a2dd45b16a | |||
478b2134f1 | |||
65bfa0f9b3 | |||
361715d79e | |||
67b56e88ec | |||
84381980f7 | |||
3fe0bcd45d | |||
7df3129ace | |||
18aec7b86f | |||
a6f66208f9 | |||
7cbddf946d | |||
60d10200f7 | |||
f8046ab176 | |||
fe2ccc442c | |||
eb7125bd6d | |||
b1cbcaefd3 | |||
ee0ae6d1be | |||
482caf5b47 | |||
4a10785c1a | |||
ebbfb6cc5b | |||
d525a262de | |||
4a25906d2a | |||
84e0fa6967 | |||
95b99232a6 | |||
a041e90b70 | |||
91fd1e10d3 | |||
26918e45b2 | |||
708e54482b | |||
1411a3349c | |||
1f076c6c0b | |||
d4b36cd125 | |||
2b39d24ab8 | |||
4006cde326 | |||
a0c039ba4e | |||
78102f3422 | |||
55c915cd38 | |||
0161468259 | |||
176864177d | |||
044d590441 | |||
63e1f4fc5d | |||
74ed95a8a0 | |||
d00ff3d73c | |||
94dd82ed99 | |||
5d6d63de55 | |||
82fde1dd72 | |||
b1e0494239 | |||
f8beb13cae | |||
24d6d59b87 | |||
3f2cddb0f2 | |||
d1e541032b | |||
99de52f66b | |||
08eef1bb14 | |||
0a4c8eed61 | |||
934758dd1d | |||
725f4d7274 | |||
a67a326fef | |||
d562837e6c | |||
0cc6b9bc0b | |||
32ab048803 | |||
a8aa04147c | |||
232473472a | |||
dbd84ec3a0 | |||
c4642d833a | |||
82603c4400 | |||
acabd531bb | |||
62a39c31bc | |||
003cf96b4d | |||
96e93882b2 | |||
f8d8f8cfcf | |||
2825c2c32f | |||
41ef53be2e | |||
e1ad7bc2e1 | |||
f6d7da7878 | |||
47c26b2cfc | |||
9e83c67bf7 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -11,6 +11,10 @@
|
|||||||
*.bcf
|
*.bcf
|
||||||
*.idx
|
*.idx
|
||||||
*.run.xml
|
*.run.xml
|
||||||
|
*.pygtex
|
||||||
|
*.vrb
|
||||||
build-messages-*.txt
|
build-messages-*.txt
|
||||||
plans_de_formation.tar.gz
|
plans_de_formation.tar.gz
|
||||||
|
_minted-*/
|
||||||
.~lock*
|
.~lock*
|
||||||
|
_minted-*/
|
||||||
|
25
README
Normal file
25
README
Normal 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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
content/commun/questions.tex
Normal file
5
content/commun/questions.tex
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
\begin{frame}
|
||||||
|
\begin{exampleblock}{}
|
||||||
|
Des questions ?
|
||||||
|
\end{exampleblock}
|
||||||
|
\end{frame}
|
11
content/licences/license-cc-by-sa-2.0.tex
Normal file
11
content/licences/license-cc-by-sa-2.0.tex
Normal 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.
|
18
content/modules_eole_envole/scribe/annuaire.tex
Normal file
18
content/modules_eole_envole/scribe/annuaire.tex
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
\skbheading{L’annuaire de module Scribe}
|
||||||
|
L’annuaire du module Scribe est opéré à l’aide 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 l’utilisation de Radius (\emph{radius.schema}) et, enfin, les objets et attributs pour l’implémentation du schéma directeur des espaces numériques de travail (\emph{ent.schema}).
|
33
content/modules_eole_envole/scribe/annuaire/objets.tex
Normal file
33
content/modules_eole_envole/scribe/annuaire/objets.tex
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
\skbheading{Les classes d’objets métiers de l’annuaire du module Scribe}
|
||||||
|
Les classe d’objets métiers de l’annuaire du module Scribe sont celles décrites dans les schémas de plus haut niveau.
|
||||||
|
Ces classes d’objets décrivent des utilisateurs, des groupes d’utilisateurs et des ressources comme les partages.
|
||||||
|
Plusieurs classes d’objets peuvent être utilisées conjointement pour préciser le type de la ressource décrite : les classes d’objects 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 d’objets 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 d’objets susceptibles d’être utilisées pour les groupes sont les suivantes :
|
||||||
|
\begin{itemize}
|
||||||
|
\item eolegroupe
|
||||||
|
\item classe
|
||||||
|
\item ENTGroupe
|
||||||
|
\item ENTClasse
|
||||||
|
\end{itemize}
|
@ -0,0 +1,79 @@
|
|||||||
|
\skbheading{La fiche du personnel administratif dans l’annuaire du module Scribe}
|
||||||
|
Le personnel administratif, dans l’annuaire du module Scribe, est la conjonction de plusieurs classes d’objets :
|
||||||
|
\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}
|
||||||
|
|
97
content/modules_eole_envole/scribe/annuaire/objets/eleve.tex
Normal file
97
content/modules_eole_envole/scribe/annuaire/objets/eleve.tex
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
\skbheading{La fiche de l’élève dans l’annuaire du module Scribe}
|
||||||
|
L’élève, dans l’annuaire du module Scribe, est la conjonction de plusieurs classes d’objets :
|
||||||
|
\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}
|
@ -0,0 +1,89 @@
|
|||||||
|
\skbheading{La fiche de l’enseignant dans l’annuaire du module Scribe}
|
||||||
|
L’enseignant, dans l’annuaire du module Scribe, est la conjonction de plusieurs classes d’objets :
|
||||||
|
\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}
|
||||||
|
|
@ -0,0 +1,73 @@
|
|||||||
|
\skbheading{La fiche du responsable d’élève dans l’annuaire du module Scribe}
|
||||||
|
Le responsable d’élève, dans l’annuaire du module Scribe, est la conjonction de plusieurs classes d’objets :
|
||||||
|
\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}
|
||||||
|
|
2
content/modules_eole_envole/scribe/annuaire/schemas.tex
Normal file
2
content/modules_eole_envole/scribe/annuaire/schemas.tex
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
\skbheading{schemas.tex}
|
||||||
|
fichier content/modules\_eole\_envole/scribe/annuaire/schemas.tex à éditer
|
29
content/modules_eole_envole/scribe/backend.tex
Normal file
29
content/modules_eole_envole/scribe/backend.tex
Normal 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 l’EAD2 pour la gestion des utilisateurs et groupes et sont donc une façon équivalente de manipuler l’annuaire.
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
\skbheading{creation-administratif.tex}
|
||||||
|
fichier content/modules\_eole\_envole/scribe/backend/creation-administratif.tex à éditer
|
@ -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 l’annuaire du module Scribe.
|
||||||
|
La fiche d’un élève dans l’annuaire 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 l’utilisation d’un poste client Windows ;
|
||||||
|
\item l’activation 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}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
\skbheading{creation-groupe.tex}
|
||||||
|
fichier content/modules\_eole\_envole/scribe/backend/creation-groupe.tex à éditer
|
@ -0,0 +1,2 @@
|
|||||||
|
\skbheading{creation-prof.tex}
|
||||||
|
fichier content/modules\_eole\_envole/scribe/backend/creation-prof.tex à éditer
|
9
content/outils/scm/definition.tex
Normal file
9
content/outils/scm/definition.tex
Normal 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}
|
11
content/outils/scm/fonctionnalites_attendues.tex
Normal file
11
content/outils/scm/fonctionnalites_attendues.tex
Normal 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}
|
47
content/outils/scm/git/commandes.tex
Normal file
47
content/outils/scm/git/commandes.tex
Normal 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}
|
14
content/outils/scm/git/commandes/add.tex
Normal file
14
content/outils/scm/git/commandes/add.tex
Normal 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}
|
7
content/outils/scm/git/commandes/bisect.tex
Normal file
7
content/outils/scm/git/commandes/bisect.tex
Normal 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}
|
7
content/outils/scm/git/commandes/blame.tex
Normal file
7
content/outils/scm/git/commandes/blame.tex
Normal 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}
|
14
content/outils/scm/git/commandes/branch.tex
Normal file
14
content/outils/scm/git/commandes/branch.tex
Normal 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}
|
0
content/outils/scm/git/commandes/branch/track.tex
Normal file
0
content/outils/scm/git/commandes/branch/track.tex
Normal file
14
content/outils/scm/git/commandes/checkout.tex
Normal file
14
content/outils/scm/git/commandes/checkout.tex
Normal 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}
|
12
content/outils/scm/git/commandes/cherry-pick.tex
Normal file
12
content/outils/scm/git/commandes/cherry-pick.tex
Normal 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}
|
7
content/outils/scm/git/commandes/cherry.tex
Normal file
7
content/outils/scm/git/commandes/cherry.tex
Normal 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}
|
13
content/outils/scm/git/commandes/clean.tex
Normal file
13
content/outils/scm/git/commandes/clean.tex
Normal 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}
|
8
content/outils/scm/git/commandes/clone.tex
Normal file
8
content/outils/scm/git/commandes/clone.tex
Normal 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}
|
15
content/outils/scm/git/commandes/commit.tex
Normal file
15
content/outils/scm/git/commandes/commit.tex
Normal 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}
|
8
content/outils/scm/git/commandes/diff.tex
Normal file
8
content/outils/scm/git/commandes/diff.tex
Normal 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}
|
13
content/outils/scm/git/commandes/fetch.tex
Normal file
13
content/outils/scm/git/commandes/fetch.tex
Normal 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}
|
13
content/outils/scm/git/commandes/filter-branch.tex
Normal file
13
content/outils/scm/git/commandes/filter-branch.tex
Normal 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}
|
14
content/outils/scm/git/commandes/grep.tex
Normal file
14
content/outils/scm/git/commandes/grep.tex
Normal 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}
|
8
content/outils/scm/git/commandes/init.tex
Normal file
8
content/outils/scm/git/commandes/init.tex
Normal 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}
|
15
content/outils/scm/git/commandes/log.tex
Normal file
15
content/outils/scm/git/commandes/log.tex
Normal 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}
|
7
content/outils/scm/git/commandes/ls-files.tex
Normal file
7
content/outils/scm/git/commandes/ls-files.tex
Normal 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}
|
14
content/outils/scm/git/commandes/merge.tex
Normal file
14
content/outils/scm/git/commandes/merge.tex
Normal 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}
|
14
content/outils/scm/git/commandes/pull.tex
Normal file
14
content/outils/scm/git/commandes/pull.tex
Normal 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}
|
15
content/outils/scm/git/commandes/push.tex
Normal file
15
content/outils/scm/git/commandes/push.tex
Normal 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}
|
14
content/outils/scm/git/commandes/rebase.tex
Normal file
14
content/outils/scm/git/commandes/rebase.tex
Normal 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}
|
0
content/outils/scm/git/commandes/remote/add.tex
Normal file
0
content/outils/scm/git/commandes/remote/add.tex
Normal file
14
content/outils/scm/git/commandes/reset.tex
Normal file
14
content/outils/scm/git/commandes/reset.tex
Normal 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}
|
14
content/outils/scm/git/commandes/revert.tex
Normal file
14
content/outils/scm/git/commandes/revert.tex
Normal 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}
|
8
content/outils/scm/git/commandes/show.tex
Normal file
8
content/outils/scm/git/commandes/show.tex
Normal 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}
|
8
content/outils/scm/git/commandes/status.tex
Normal file
8
content/outils/scm/git/commandes/status.tex
Normal 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}
|
15
content/outils/scm/git/commandes/tag.tex
Normal file
15
content/outils/scm/git/commandes/tag.tex
Normal 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}
|
33
content/outils/scm/git/configuration/alias.tex
Normal file
33
content/outils/scm/git/configuration/alias.tex
Normal 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}
|
10
content/outils/scm/git/configuration/editeur.tex
Normal file
10
content/outils/scm/git/configuration/editeur.tex
Normal 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}
|
0
content/outils/scm/git/configuration/gitignore.tex
Normal file
0
content/outils/scm/git/configuration/gitignore.tex
Normal file
47
content/outils/scm/git/configuration/hooks.tex
Normal file
47
content/outils/scm/git/configuration/hooks.tex
Normal 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}
|
8
content/outils/scm/git/configuration/presentation.tex
Normal file
8
content/outils/scm/git/configuration/presentation.tex
Normal 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}
|
16
content/outils/scm/git/configuration/shell.tex
Normal file
16
content/outils/scm/git/configuration/shell.tex
Normal 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}
|
9
content/outils/scm/git/configuration/user.tex
Normal file
9
content/outils/scm/git/configuration/user.tex
Normal 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}
|
6
content/outils/scm/git/decentralise.tex
Normal file
6
content/outils/scm/git/decentralise.tex
Normal 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}
|
12
content/outils/scm/git/etats_fichier.tex
Normal file
12
content/outils/scm/git/etats_fichier.tex
Normal 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}
|
10
content/outils/scm/git/exercices/exercice_01.tex
Normal file
10
content/outils/scm/git/exercices/exercice_01.tex
Normal 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}
|
38
content/outils/scm/git/exercices/exercice_01/steps.tex
Normal file
38
content/outils/scm/git/exercices/exercice_01/steps.tex
Normal 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}
|
14
content/outils/scm/git/exercices/exercice_02.tex
Normal file
14
content/outils/scm/git/exercices/exercice_02.tex
Normal 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}
|
21
content/outils/scm/git/exercices/exercice_02/steps.tex
Normal file
21
content/outils/scm/git/exercices/exercice_02/steps.tex
Normal 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}
|
9
content/outils/scm/git/exercices/exercice_03.tex
Normal file
9
content/outils/scm/git/exercices/exercice_03.tex
Normal 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}
|
31
content/outils/scm/git/exercices/exercice_03/steps.tex
Normal file
31
content/outils/scm/git/exercices/exercice_03/steps.tex
Normal 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}
|
7
content/outils/scm/git/exercices/exercice_04.tex
Normal file
7
content/outils/scm/git/exercices/exercice_04.tex
Normal 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}
|
138
content/outils/scm/git/exercices/exercice_04/steps.tex
Normal file
138
content/outils/scm/git/exercices/exercice_04/steps.tex
Normal 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}
|
8
content/outils/scm/git/exercices/exercice_05.tex
Normal file
8
content/outils/scm/git/exercices/exercice_05.tex
Normal 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}
|
115
content/outils/scm/git/exercices/exercice_05/steps.tex
Normal file
115
content/outils/scm/git/exercices/exercice_05/steps.tex
Normal 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}
|
8
content/outils/scm/git/exercices/exercice_06.tex
Normal file
8
content/outils/scm/git/exercices/exercice_06.tex
Normal 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}
|
219
content/outils/scm/git/exercices/exercice_06/steps.tex
Normal file
219
content/outils/scm/git/exercices/exercice_06/steps.tex
Normal 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}
|
11
content/outils/scm/git/exercices/exercice_07.tex
Normal file
11
content/outils/scm/git/exercices/exercice_07.tex
Normal 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}
|
132
content/outils/scm/git/exercices/exercice_07/steps.tex
Normal file
132
content/outils/scm/git/exercices/exercice_07/steps.tex
Normal 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}
|
8
content/outils/scm/git/exercices/exercice_08.tex
Normal file
8
content/outils/scm/git/exercices/exercice_08.tex
Normal 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}
|
156
content/outils/scm/git/exercices/exercice_08/steps.tex
Normal file
156
content/outils/scm/git/exercices/exercice_08/steps.tex
Normal 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}
|
8
content/outils/scm/git/exercices/exercice_09.tex
Normal file
8
content/outils/scm/git/exercices/exercice_09.tex
Normal 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}
|
4
content/outils/scm/git/exercices/exercice_09/steps.tex
Normal file
4
content/outils/scm/git/exercices/exercice_09/steps.tex
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
\begin{frame}
|
||||||
|
\frametitle{}
|
||||||
|
% contenu (pas trop long) de la diapositive
|
||||||
|
\end{frame}
|
9
content/outils/scm/git/exercices/exercice_10.tex
Normal file
9
content/outils/scm/git/exercices/exercice_10.tex
Normal 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}
|
35
content/outils/scm/git/exercices/exercice_10/steps.tex
Normal file
35
content/outils/scm/git/exercices/exercice_10/steps.tex
Normal 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}
|
7
content/outils/scm/git/installation/linux.tex
Normal file
7
content/outils/scm/git/installation/linux.tex
Normal 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}
|
8
content/outils/scm/git/installation/macos.tex
Normal file
8
content/outils/scm/git/installation/macos.tex
Normal 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}
|
8
content/outils/scm/git/installation/windows.tex
Normal file
8
content/outils/scm/git/installation/windows.tex
Normal 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}
|
9
content/outils/scm/git/presentation.tex
Normal file
9
content/outils/scm/git/presentation.tex
Normal 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}
|
8
content/outils/scm/git/references/references.tex
Normal file
8
content/outils/scm/git/references/references.tex
Normal 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}
|
11
content/outils/scm/git/stockage.tex
Normal file
11
content/outils/scm/git/stockage.tex
Normal 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}
|
7
content/outils/scm/git/web/basicssh.tex
Normal file
7
content/outils/scm/git/web/basicssh.tex
Normal 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}
|
10
content/outils/scm/git/web/gitlab.tex
Normal file
10
content/outils/scm/git/web/gitlab.tex
Normal 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}
|
11
content/outils/scm/git/web/gitolite.tex
Normal file
11
content/outils/scm/git/web/gitolite.tex
Normal 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}
|
10
content/outils/scm/git/web/gogs.tex
Normal file
10
content/outils/scm/git/web/gogs.tex
Normal 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}
|
8
content/outils/scm/workflow/branching.tex
Normal file
8
content/outils/scm/workflow/branching.tex
Normal 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}
|
9
content/outils/scm/workflow/driessen.tex
Normal file
9
content/outils/scm/workflow/driessen.tex
Normal 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}
|
15
content/outils/scm/workflow/driessen/schema.tex
Normal file
15
content/outils/scm/workflow/driessen/schema.tex
Normal 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}
|
@ -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é}
|
@ -0,0 +1,2 @@
|
|||||||
|
\skbheading{equipement\_personnel\_utilises\_oui\_non.tex}
|
||||||
|
fichier content/questions/equipement/equipement\_personnel\_utilises\_oui\_non.tex à éditer
|
12
content/questions/equipement/equipement_utilises.tex
Normal file
12
content/questions/equipement/equipement_utilises.tex
Normal 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é}
|
9
content/questions/services/acces_service_depuis_ou.tex
Normal file
9
content/questions/services/acces_service_depuis_ou.tex
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
\skbheading{Type d’accè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}
|
2
content/questions/services/attentes_ameliorations.tex
Normal file
2
content/questions/services/attentes_ameliorations.tex
Normal 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
Reference in New Issue
Block a user