Skip to content

Commit 680f755

Browse files
committed
simplification de la partie git collaboratif (plus besoin de définir une stratégie par défaut)
1 parent d420bb7 commit 680f755

File tree

11 files changed

+63
-75
lines changed

11 files changed

+63
-75
lines changed

slides/_git_collab.qmd

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,62 +14,40 @@
1414

1515
{{< include applications_git/_application4a.qmd >}}
1616

17-
## Divergence d'historiques : cas simple
18-
19-
![](img/ff.png)
20-
21-
22-
- `Git` résout le problème via un [***fast-forward merge***]{.blue2}
23-
- Le commit distant est rajouté à l'historique local
24-
- Les dépôts sont synchronisés
25-
26-
## Divergence d'historiques : cas compliqué
17+
## Divergence d'historiques : cas simple {auto-animate=true}
2718

2819
![](img/divergence.png)
2920

21+
- Si les deux *commits* concernent des **parties séparées du projet**, un `pull` préalable suffit à résoudre le problème
22+
3023

31-
- `Git` ne peut pas résoudre de lui même la divergence
32-
33-
34-
- Deux stratégies possibles
35-
- Le [**merge**]{.blue2}
36-
- Le [**rebase**]{.blue2}
37-
38-
## 1ère possibilité : le *merge*
39-
40-
![](img/merge.png)
41-
24+
## Divergence d'historiques : cas simple {auto-animate=true}
4225

43-
- `Git` crée un [**commit de merge**]{.blue2}
44-
- Comportement par défaut (jusqu'à récemment)
26+
![](img/merge_commit_local.png)
4527

28+
- `Git` fusionne les deux *commits* en un [***merge commit***]{.blue2}
29+
- Les deux *commits* existent toujours dans l'historique !
30+
- L'historique est réconcilié → on peut `push`
4631

47-
- [**Inconvénient**]{.orange} : rend l'[**historique non-linéaire**]{.blue2} ([plus d'explications](https://www.atlassian.com/fr/git/tutorials/using-branches/git-merge))
32+
## Divergence d'historiques : cas simple {auto-animate=true}
4833

49-
## 2ème possibilité : le *rebase* (1/2)
34+
![](img/merge_commit_remote.png)
5035

51-
![](img/rebase1.png)
36+
- Le dépôt local et le dépôt distant sont synchronisés 🤗
5237

38+
{{< include applications_git/_application4b.qmd >}}
5339

54-
- `Git` effectue 3 étapes
55-
- Supprime temporairement le commit local
56-
- Réalise un *fast-forward merge*
57-
- Rajoute le commit local au bout de l'historique
58-
59-
## 2ème possibilité : le *rebase* (2/2)
60-
61-
![](img/rebase2.png)
62-
63-
64-
- [**Avantage**]{.orange} : l'historique reste [**linéaire**]{.blue2}
65-
40+
{{< include applications_git/_application5a.qmd >}}
6641

67-
- [**Attention**]{.orange} : ne jamais *rebase* des commits déjà poussés sur un dépôt public ([plus d'explications](https://git-scm.com/book/fr/v2/Les-branches-avec-Git-Rebaser-Rebasing#s_rebase_peril))
42+
## Divergence d'historiques : cas compliqué
6843

44+
![](img/divergence.png)
6945

70-
{{< include applications_git/_application4b.qmd >}}
46+
- Si les deux *commits* modifient les **mêmes parties du projet**, un `pull` ne suffit plus à résoudre le problème
47+
- `Git` ne peut pas décider quelle version prioriser 🤔
48+
- Il faut lui indiquer comment **résoudre le conflit**
7149

72-
{{< include applications_git/_application5.qmd >}}
50+
{{< include applications_git/_application5b.qmd >}}
7351

7452

7553
## Le modèle des branches {auto-animate=true}

slides/_git_fundamentals.qmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ L'utilisation de `Git` nécessite [__certaines notions préalables__]{.orange}:
135135
- Utilisation en ligne de commandes
136136
- Différentes [__interfaces graphiques__]{.blue2} (`RStudio`, `VS Code`...)
137137

138-
## Concepts {auto-animate=true}
138+
## Concepts
139139

140140
#### `Git`, `GitHub`, `GitLab`... quelles différences ?
141141

slides/applications_git/_application0.qmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
5. Cloner le dépôt distant sur votre environnement local (ici, le `RStudio` de la plateforme `LS3`):
3838
+ `File``New project``Version Control``Git`
3939
6. [Générer un *token*](https://gitlab.insee.fr/-/user_settings/personal_access_tokens) (jeton d'authentification) sur `gitlab.insee.fr`
40-
7. Stocker le *token* sur `LS3` (ou un gestionnaire de mot de passe) :
40+
7. Stocker le *token* sur `LS3` :
4141
+ `Mon Compte` -> `Git` -> `Token d'accès personnel pour Forge Git`
4242
8. Terminer la procédure de clonage en fournissant le nom d'utilisateur (IDEP) et le *token*
4343
:::
@@ -46,4 +46,4 @@
4646

4747
:::
4848

49-
**Question** : qu'est ce qui différencie le projet cloné d'un projet quelconque ?
49+
**Questions** : qu'est ce qui différencie le projet cloné d'un projet quelconque ?
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
## Application 4 {.smaller}
22

33
:::{.callout-tip collapse="true" icon=false}
4-
## Synchronisation des dépôts
4+
## Divergence d'historiques : cas simple
55

66
::: {.nonincremental}
77
1. Se mettre par [__groupes de 3/4 personnes__]{.orange}:
88
- Une personne aura la responsabilité d’être [**mainteneur**]{.blue2}
99
- Deux à trois personnes seront [**développeurs**]{.blue2}
10-
2. Le mainteneur crée un dépôt sur `Github` / `Gitlab`. Il/Elle donne des droits au(x) développeur(s) du projet
11-
3. Créer une copie locale (clone) du projet sur son service `RStudio`
12-
4. Créer un fichier `<votre_nom>-<votre_prenom>.md`. Écrire dedans trois phrases de son choix sans ponctuation ni majuscules, puis `commit` et `push` les modifications
10+
2. Le mainteneur crée un dépôt sur `Github` / `Gitlab`. Il/Elle donne des **droits de niveau *maintainer*** aux membres du projet
11+
3. Chaque membre du groupe crée un nouveau service `RStudio` et clone le dépôt commun du groupe. Conseil : utiliser l'interface d'Onyxia pour cloner directement le dépôt avec le *token* intégré -> plus besoin de renseigner le *token* à chaque `push` !
12+
4. Créer un fichier `<votre_nom>-<votre_prenom>.md`. Écrire dedans quelques lignes de son choix, puis `commit` et `push` les modifications
1313
5. __À ce stade, une seule personne (la plus rapide) devrait ne pas avoir rencontré de rejet du `push`.__
14-
C’est normal ! Le premier ayant fait un `push` a modifié le dépôt commun ; les autres doivent intégrer ces modifications dans leur version locale (`pull`) avant d’avoir le droit de proposer un changement.
15-
6. Néanmoins, le `pull` renvoie également une erreur : `Git` ne parvient pas à résoudre la divergence d'historique. Essayons de comprendre le problème et les solutions possibles.
1614
:::
1715

1816
:::
17+
18+
**Question** : pourquoi les autres membres ne peuvent pas `push` normalement ? Indice : le message d'erreur de `Git` donne la réponse !

slides/applications_git/_application4b.qmd

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
## Application 4 {.smaller}
1+
## Application 4 (suite) {.smaller}
22

33
:::{.callout-tip collapse="true" icon=false}
4-
## Synchronisation des dépôts
4+
## Divergence d'historiques : cas simple
55

66
::: {.nonincremental}
7-
7. Dans notre cas, on va conserver le précédent défaut (le *commit* de *merge*). Comme l'interface `RStudio` ne permet pas (encore) de sélectionner la stratégie de `pull`, on va préciser la configuration voulue via une commande passée dans le terminal
8-
+ `git config pull.rebase false`
9-
8. Pour ceux dont le `push` a été refusé, effectuer un `pull` des modifications distantes via l'interface `RStudio`
10-
9. Effectuer à nouveau un `push` de vos modifications locales
11-
10. Les derniers membres du groupe devront refaire les étapes précédentes, potentiellement plusieurs fois, pour pouvoir `push` leurs modifications locales
7+
7. Pour ceux dont le `push` a été refusé, effectuer un `pull` des modifications distantes via l'interface `RStudio`
8+
8. Effectuer à nouveau un `push` de vos modifications locales
9+
9. Les derniers membres du groupe devront refaire les étapes précédentes, potentiellement plusieurs fois, pour pouvoir `push` leurs modifications locales
1210
:::
1311

1412
:::

slides/applications_git/_application5.qmd

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## Application 5 {.smaller}
2+
3+
:::{.callout-tip collapse="true" icon=false}
4+
## Divergence d'historiques : cas compliqué
5+
6+
::: {.nonincremental}
7+
1. Avant de commencer cette application, chaque membre du groupe doit avoir réussi à `push` ses modifications de l'application précédente (éventuellement après plusieurs tentatives selon le nombre de membres du groupe)
8+
2. Le mainteneur modifie le contenu de son fichier, puis `commit` et `push` les modifications
9+
3. **Sans faire de `pull` préalable**, les autres membres modifient chacun de leur côté **le contenu du fichier du mainteneur**, puis `commit` et `push` les modifications
10+
4. Le `push` est rejeté pour la même raison que dans l'application précédente : les dépôts ne sont plus synchronisés, il faut `pull` les changements distants au préalable. Mais **cette fois, le `pull` est également rejeté** 😱
11+
:::
12+
13+
:::
14+
15+
**Question** : pourquoi le `pull` est cette fois impossible ?
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## Application 5 (suite) {.smaller}
2+
3+
:::{.callout-tip collapse="true" icon=false}
4+
## Divergence d'historiques : résolution de conflits
5+
6+
::: {.nonincremental}
7+
1. Ouvrir le fichier concerné, et analyser la structure d'un conflit
8+
2. Résoudre le conflit en choisissant quelle information retenir : le local ? le distant ? les deux ? aucun des deux ?
9+
3. **Un conflit est considéré comme résolvable par `Git` dès lors que toutes les lignes de balise ont disparu**. Pour finir la résolution, `commit`/`push` les modifications
10+
4. Comme dans l'application précédente, seul le membre le plus rapide parvient à `push`. Les autres doivent répéter l'opération autant de fois qu'il y a de conflits.
11+
:::
12+
13+
:::
14+
15+
**Question** : comment limiter au maximum la survenue des conflits d'historique en pratique ?

slides/img/merge.png

-35.7 KB
Binary file not shown.

slides/img/merge_commit_local.png

51.5 KB
Loading

0 commit comments

Comments
 (0)