You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Romain Lesur](https://github.com/RLesur) est inspirée de
41
+
du cadavre exquis est inspirée de
42
42
[cette ressource](https://github.com/corent01/03-Swartz/blob/master/Parcours/01-La-prairie/git/exercice-git-cadavre-exquis.md) et de [celle-ci](https://github.com/simplonco/cadavre-request).
43
43
44
44
Cette partie part du principe que les concepts généraux de `Git` sont
@@ -50,9 +50,7 @@ disponible. Un exemple de tel environnement est le `JupyterLab` ou l'environneme
Les principaux autres IDE disponibles (PyCharm, RStudio) présentent
73
-
des fonctionalités similaires. Il est
74
-
tout à fait possible d'en utiliser un autre. `VisualStudio` propose
72
+
`VSCode` propose
75
73
probablement, à l'heure actuelle, l'ensemble le plus complet.
76
74
77
75
Certains passages de ce TD nécessitent d'utiliser la ligne de commande.
@@ -84,13 +82,12 @@ pour les routines quotidiennes et ne les utiliser que
84
82
pour certaines opérations où elles s'avèrent fort pratiques
85
83
(notamment la comparaison de deux fichiers avant de devoir fusionner).
86
84
87
-
88
-
89
85
# Configuration du compte Github
90
86
91
87
## Rappels sur la notion de dépôt distant
92
88
93
-
Pour rappel, comme expliqué précédemment, il convient de distinguer
89
+
Comme expliqué dans le chapitre précédent,
90
+
il convient de distinguer
94
91
le dépôt distant (*remote*) et la copie ou les copies locales (les *clones*)
95
92
d'un dépôt. Le dépôt distant est généralement stocké sur une forge
96
93
logicielle (`Github` ou `Gitlab`) et sert à centraliser la version
@@ -111,24 +108,16 @@ d'offrir une manière robuste et efficace d'interagir avec un
111
108
dépôt distant facilitant ainsi la collaboration en équipe ou en
112
109
solitaire.
113
110
114
-
Pour ces exercices, je propose d'utiliser `Github` dont les fonctionalités
115
-
nous suffiront amplement[^1]. Si,
116
-
dans le futur, les fonctionnalités ne vous conviennent pas (sans l'apport de fonctionnalités
117
-
externes, `Github` propose moins de fonctionalités que `Gitlab`) ou si vous êtes
118
-
mal à l'aise concernant le possesseur de `Github` (Microsoft), vous pourrez utiliser
119
-
`Gitlab` <iclass="fab fa-gitlab"></i>, son concurrent.
120
-
L'avantage de `Github` par rapport à `Gitlab` est que le premier est plus visible, car
111
+
Pour ces exercices, il est proposé
112
+
d'utiliser `Github`, la forge la plus visible.
113
+
L'avantage de `Github` par rapport à son principal concurrent, `Gitlab`,
114
+
est que le premier est plus visible, car
121
115
mieux indexé par `Google` et concentre, en partie pour des raisons historiques, plus
122
116
de développeurs `Python` et `R` (ce qui est important dans des domaines comme
123
-
le code où les externalités de réseau jouent). Le débat `Github` vs `Gitlab` n'a
124
-
plus beaucoup de sens aujourd'hui car les fonctionnalités ont convergé (`Github`
125
-
a rattrapé une partie de son retard sur l'intégration continue) et, de toute
126
-
manière, on peut tout à fait connecter des dépôts `Gitlab` et `Github`.
117
+
le code où les externalités de réseau jouent).
127
118
128
119
129
-
[^1]: Dans sa version en ligne, `Github` (<https://github.com>)
130
-
dispose de plus de visibilité que `Gitlab` (<https://gitlab.com>).
131
-
L'avantage que comportait `Gitlab` par rapport à `Github`
120
+
[^1]: L'avantage que comportait `Gitlab` par rapport à `Github`
132
121
à une époque, à savoir la possibilité de disposer gratuitement de ressources
133
122
pour faire de l'intégration continue, n'existe plus depuis que `Github`
134
123
a lancé son service `Github Actions`. Cependant, être familiarisé à
@@ -140,18 +129,22 @@ les fonctionalités coeur de ces deux interfaces qui sont en fait quasi-identiqu
140
129
141
130
## Première étape: créer un compte `Github`
142
131
143
-
Les deux premières étapes se font sur [Github](https://github.com).
132
+
Les deux premières étapes se font sur [`Github`](https://github.com).
144
133
145
134
::: {.cell .markdown}
146
135
```{=html}
147
136
<div class="alert alert-success" role="alert">
148
-
<h3 class="alert-heading"><i class="fa-solid fa-pencil"></i> Exercice 1 : Créer un compte Github</h3>
137
+
<h3 class="alert-heading"><i class="fa-solid fa-pencil"></i> Exercice 1 : Créer un compte <code>Github</code></h3>
149
138
```
150
139
151
140
1. Si vous n'en avez pas déjà un, créer un compte sur <ahref="https://github.com">https://github.com</a>
152
-
2. Créer un dépôt vide. Créez ce dépôt **privé**, cela permettra
141
+
2. Créer un dépôt en suivant les consignes ci-dessous.
142
+
143
+
* Créez ce dépôt **privé**, cela permettra
153
144
dans l'exercice 2 d'activer notre jeton. Vous pourrez le rendre public
154
145
après l'exercice 2, c'est comme vous le souhaitez.
146
+
* Créer ce dépôt avec un `README.md` en cliquant sur la case `Add a README file`
147
+
* Ajouter un `.gitignore` en sélectionnant le modèle `Python`
155
148
156
149
*Connexion sur <ahref="https://github.com">https://github.com</a> > + (en haut de la page) > New repository > Renseigner le "Repository name" > Cocher "private" > "Create repository"*
157
150
@@ -177,13 +170,20 @@ il est nécessaire de s’authentifier (un dépôt distant, même public, ne peu
177
170
178
171
Plus précisément, il existe deux modalités pour faire connaître son identité à `Github` :
179
172
180
-
* une authentification HTTPS (décrite ici) : l’authentification se fait avec un login et un mot de passe (qu’il faut renseigner à chaque interaction avec le dépôt), ou avec un token (méthode à privilégier).
181
-
* une authentification SSH : l’authentification se fait par une clé cryptée disponible sur le poste de travail et que GitHub ou GitLab connaît. Une fois configurée, cette méthode ne nécessite plus de faire connaître son identité : l’empreinte digitale que constitue la clé suffit à reconnaître un utilisateur.
173
+
* une __authentification HTTPS__ (décrite ici) : l’authentification se fait avec un login et un mot de passe ou avec un _token_ (un mot de passe compliqué généré automatiquement par `Github` et connu exclusivement du détenteur du compte `Github`) ;
174
+
* une __authentification SSH__ : l’authentification se fait par une clé cryptée disponible sur le poste de travail et que `GitHub` ou `GitLab` connaît. Une fois configurée, cette méthode ne nécessite plus de faire connaître son identité : l’empreinte digitale que constitue la clé suffit à reconnaître un utilisateur.
182
175
183
176
La [documentation collaborative `utilitR`](https://www.book.utilitr.org/03_fiches_thematiques/fiche_configurer_git.html#interaction-avec-un-d%C3%A9p%C3%B4t-distant-principe) présente les raisons pour lesquelles il convient de favoriser
184
177
la méthode HTTPS sur la méthode SSH.
185
178
186
-
Depuis août 2021, `Github` n'autorise plus l'authentification par mot de passe
Il est nécessaire d'utiliser un *token* (jeton d'accès) qui présente l'avantage
@@ -202,6 +202,12 @@ d'un dépôt).
202
202
Pour choisir entre ces différentes options, vous pouvez vous rendre sur *Settings > Password and authentication > Enable two-factor authentication*.
203
203
204
204
205
+
```{=html}
206
+
</div>
207
+
```
208
+
:::
209
+
210
+
205
211
::: {.cell .markdown}
206
212
```{=html}
207
213
<div class="alert alert-info" role="alert">
@@ -235,23 +241,26 @@ connu de vous seuls.
235
241
La [documentation officielle](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) comporte un certain nombre de captures d'écran expliquant
236
242
comment procéder.
237
243
238
-
Nous allons utiliser le `credential helper` associé à Git pour stocker
244
+
Nous allons utiliser le `credential helper` associé à `Git` pour stocker
239
245
ce jeton. Ce `credential helper` permet de conserver de manière pérenne
240
246
un jeton (on peut aussi faire en sorte que le mot de passe soit automatiquement
241
247
supprimé de la mémoire de l'ordinateur au bout, par
242
248
exemple, d'une heure).
249
+
243
250
L'inconvénient de cette méthode est que `Git` écrit en clair le jeton dans
244
251
un fichier de configuration. C'est pour cette raison qu'on utilise des jetons
245
252
puisque, si ces derniers sont révélés, on peut toujours les révoquer et éviter
246
253
les problèmes (pour ne pas stocker en clair un jeton il faudrait utiliser
247
254
une librairie supplémentaire comme `libsecrets` qui est au-delà du programme
248
255
de ce cours).
249
256
250
-
Ma recommandation,
251
-
si vous désirez conserver de manière plus durable ou plus sécurisée votre jeton
257
+
Si vous désirez conserver de manière plus durable ou plus sécurisée votre jeton
252
258
(en ne conservant pas le jeton en clair mais de manière hashée),
253
259
est d'utiliser un gestionnaire de mot de passe comme
254
-
[Keepass](https://keepass.fr/) (recommandé par l'Anssi).
260
+
[Keepass](https://keepass.fr/) (recommandé par l'Anssi). Néanmoins,
261
+
il est recommandé de tout de même fixer une date d'expéritation
262
+
aux jetons pour limiter les risques de sécurité d'un _token_ qui fuite
263
+
sans s'en rendre compte.
255
264
256
265
::: {.cell .markdown}
257
266
```{=html}
@@ -263,7 +272,7 @@ est d'utiliser un gestionnaire de mot de passe comme
263
272
1️⃣ Suivre la
264
273
[documentation officielle](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) en ne donnant que les droits `repo` au jeton (ajouter les droits
265
274
`workflow` si vous désirez que votre jeton soit utilisable pour des projets
266
-
où l'intégration continue est nécessaire)
275
+
où l'intégration continue est nécessaire).
267
276
268
277
Pour résumer les étapes devraient être les suivantes :
269
278
@@ -307,7 +316,9 @@ vous avez un message de `Git`:
307
316
308
317
> warning: You appear to have cloned an empty repository.
309
318
310
-
Ceci est normal, ce n'est pas une erreur. Le dossier de votre projet a bien
319
+
Ce n'est pas une erreur mais il est préférable de suivre la
320
+
consigne de l'exercice 1 et de créer un projet non vide.
321
+
Le dossier de votre projet a bien
311
322
été créé.
312
323
313
324
Si vous avez une erreur, suivez la consigne présentée ci-après
@@ -351,8 +362,8 @@ A ce stade, nous avons configuré `Git` pour être en mesure
351
362
de s'authentifier automatiquement et nous avons cloné le dépôt pour avoir une
352
363
copie locale de travail.
353
364
354
-
On n'a encore ajouté aucun fichier à `Git`. D'ailleurs, la première
355
-
chose à faire est d'exclure un certain nombre de fichiers, afin de ne pas
365
+
On n'a encore ajouté aucun fichier à `Git`. L'une des premières
366
+
choses à faire est d'exclure un certain nombre de fichiers, afin de ne pas
0 commit comments