Skip to content

Commit 69d5bc7

Browse files
committed
mise à jour de quelques consignes
1 parent e3f1ef1 commit 69d5bc7

File tree

1 file changed

+53
-42
lines changed

1 file changed

+53
-42
lines changed

content/git/exogit.qmd

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ print_badges("content/git/exogit.qmd")
3434
```
3535
:::
3636

37-
Les exercices suivants sont inspirés d'un cours de Git que j'ai construit
37+
Les exercices suivants sont inspirés d'un cours de Git que j'ai
38+
participé à construire
3839
à l'Insee et dont les ressources sont disponibles
3940
[ici](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/). L'idée
40-
du cadavre exquis, qui m'a été soufflée par
41-
[Romain Lesur](https://github.com/RLesur) est inspirée de
41+
du cadavre exquis est inspirée de
4242
[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).
4343

4444
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
5050
<a href="https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true&amp;onyxia.friendlyName=%C2%ABpython-datascience%C2%BB&amp;init.personalInit=%C2%ABhttps%3A%2F%2Fraw.githubusercontent.com%2Flinogaliana%2Fpython-datascientist%2Fmaster%2Fsspcloud%2Finit-jupyter.sh%C2%BB&amp;init.personalInitArgs=%C2%ABgit%20exogit%C2%BB&amp;security.allowlist.enabled=false" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/SSPcloud-Tester%20via%20SSP--cloud-informational&amp;color=yellow?logo=Python" alt="Onyxia"></a>
5151

5252

53-
<!-- KA : Lien vers le chapitre précédent le fonctionne pas -->
54-
55-
Outre le [chapitre précédent](#introgit), il existe de
53+
Outre le [chapitre précédent](/content/course/git/introgit.qmd), il existe de
5654
nombreuses ressources sur internet sur le sujet,
5755
notamment une série de ressources construites
5856
pour l'Insee [sur ce site](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/)
@@ -62,16 +60,16 @@ et [pratique sur RStudio](https://www.book.utilitr.org/03_fiches_thematiques/fic
6260
les ressources ne sont donc pas du `Python` car `Git` est un outil transversal
6361
qui doit servir quel que soit le langage de prédilection.
6462

65-
de pratiques collaboratives devenues standards dans le domaine de l'_open-source_
63+
`Git` fait parti des pratiques collaboratives
64+
devenues standards dans le domaine de l'_open-source_
6665
mais également de plus en plus communes dans les administrations et entreprises
6766
de la _data science_.
6867

69-
Ce chapitre propose d'utiliser l' extension `Git` de `JupyterLab` ou de `VSCode`.
68+
Ce chapitre propose, pour simplifier l'apprentissage,
69+
d'utiliser l' extension `Git` de `JupyterLab` ou de `VSCode`.
7070
Un tutoriel présentant l'extension `JupyterLab` est disponible
7171
[ici](https://annefou.github.io/jupyter_publish/02-git/index.html).
72-
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
7573
probablement, à l'heure actuelle, l'ensemble le plus complet.
7674

7775
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
8482
pour certaines opérations où elles s'avèrent fort pratiques
8583
(notamment la comparaison de deux fichiers avant de devoir fusionner).
8684

87-
88-
8985
# Configuration du compte Github
9086

9187
## Rappels sur la notion de dépôt distant
9288

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
9491
le dépôt distant (*remote*) et la copie ou les copies locales (les *clones*)
9592
d'un dépôt. Le dépôt distant est généralement stocké sur une forge
9693
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
111108
dépôt distant facilitant ainsi la collaboration en équipe ou en
112109
solitaire.
113110

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` <i class="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
121115
mieux indexé par `Google` et concentre, en partie pour des raisons historiques, plus
122116
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).
127118

128119

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`
132121
à une époque, à savoir la possibilité de disposer gratuitement de ressources
133122
pour faire de l'intégration continue, n'existe plus depuis que `Github`
134123
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
140129

141130
## Première étape: créer un compte `Github`
142131

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).
144133

145134
::: {.cell .markdown}
146135
```{=html}
147136
<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>
149138
```
150139

151140
1. Si vous n'en avez pas déjà un, créer un compte sur <a href="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
153144
dans l'exercice 2 d'activer notre jeton. Vous pourrez le rendre public
154145
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`
155148

156149
*Connexion sur <a href="https://github.com">https://github.com</a> > + (en haut de la page) > New repository > Renseigner le "Repository name" > Cocher "private" > "Create repository"*
157150

@@ -177,13 +170,20 @@ il est nécessaire de s’authentifier (un dépôt distant, même public, ne peu
177170

178171
Plus précisément, il existe deux modalités pour faire connaître son identité à `Github` :
179172

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.
182175

183176
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
184177
la méthode HTTPS sur la méthode SSH.
185178

186-
Depuis août 2021, `Github` n'autorise plus l'authentification par mot de passe
179+
::: {.cell .markdown}
180+
```{=html}
181+
<div class="alert alert-info" role="alert">
182+
<h3 class="alert-heading"><i class="fa-solid fa-comment"></i> Note</h3>
183+
```
184+
185+
186+
Depuis Août 2021, `Github` n'autorise plus l'authentification par mot de passe
187187
lorsqu'on interagit (`pull`/`push`) avec un dépôt distant
188188
([raisons ici](https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/)).
189189
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).
202202
Pour choisir entre ces différentes options, vous pouvez vous rendre sur *Settings > Password and authentication > Enable two-factor authentication*.
203203

204204

205+
```{=html}
206+
</div>
207+
```
208+
:::
209+
210+
205211
::: {.cell .markdown}
206212
```{=html}
207213
<div class="alert alert-info" role="alert">
@@ -235,23 +241,26 @@ connu de vous seuls.
235241
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
236242
comment procéder.
237243

238-
Nous allons utiliser le `credential helper` associé à Git pour stocker
244+
Nous allons utiliser le `credential helper` associé à `Git` pour stocker
239245
ce jeton. Ce `credential helper` permet de conserver de manière pérenne
240246
un jeton (on peut aussi faire en sorte que le mot de passe soit automatiquement
241247
supprimé de la mémoire de l'ordinateur au bout, par
242248
exemple, d'une heure).
249+
243250
L'inconvénient de cette méthode est que `Git` écrit en clair le jeton dans
244251
un fichier de configuration. C'est pour cette raison qu'on utilise des jetons
245252
puisque, si ces derniers sont révélés, on peut toujours les révoquer et éviter
246253
les problèmes (pour ne pas stocker en clair un jeton il faudrait utiliser
247254
une librairie supplémentaire comme `libsecrets` qui est au-delà du programme
248255
de ce cours).
249256

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
252258
(en ne conservant pas le jeton en clair mais de manière hashée),
253259
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.
255264

256265
::: {.cell .markdown}
257266
```{=html}
@@ -263,7 +272,7 @@ est d'utiliser un gestionnaire de mot de passe comme
263272
1️⃣ Suivre la
264273
[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
265274
`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).
267276

268277
Pour résumer les étapes devraient être les suivantes :
269278

@@ -307,7 +316,9 @@ vous avez un message de `Git`:
307316

308317
> warning: You appear to have cloned an empty repository.
309318
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
311322
été créé.
312323

313324
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
351362
de s'authentifier automatiquement et nous avons cloné le dépôt pour avoir une
352363
copie locale de travail.
353364

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
356367
faire une erreur pénible à réparer.
357368

358369

0 commit comments

Comments
 (0)