Skip to content

Commit

Permalink
ajouts module RStudio et conflits
Browse files Browse the repository at this point in the history
vcameron1 committed Mar 19, 2024
1 parent 067e215 commit 15fb4a9
Showing 9 changed files with 117 additions and 190 deletions.
220 changes: 39 additions & 181 deletions bloc2/02_git.Rmd
Original file line number Diff line number Diff line change
@@ -123,13 +123,11 @@ C'est un système qui permet de suivre l'**ajout** et les **modifications** pour

Il présente l'avantage d'être extrêmement versatile.

Selon [Alice Bartlett](https://twitter.com/alicebartlett?lang=en), Git vous permet de:

1. Racontez l'histoire de votre projet
2. Voyager dans le temps
3. Expérimentez avec les changements
4. Backup votre travail
5. Collaborer sur des projets
5. **Collaborer sur des projets**

--

@@ -150,148 +148,7 @@ Mais le désavantage de fonctionner seulement avec les fichiers "plain text"...
7. Revenir en arrière
8. Récupérer les modifications de co-équipiers

Complétez les étapes en suivant les instructions données dans le [chapitre 7 (étapes 0 à 3)](https://econumuds.github.io/BIO500/git.html#d%C3%A9buter-avec-git)

---
# 1. Explorer l'interface github

- Aller à la page du cours BIO500[https://github.com/EcoNumUdS/BIO500]

---
# 2. Créer un compte

- Aller à la page D'accueil de gitub[https://github.com]
- Sélectionner "sign up" et entrer les informations

---
# 3. Créer un nouveau projet

- S'inscrire avec "sign in"
- Sélectionner le bouton new pour créer un nouveau dépôt
- Suivre les instructions
- On peut changer les options pour avoir un dépôt publique (tous peuvent consulter) ou un dépôt privé (accessible sur invitation seulement)

---
# 3. Créer un nouveau projet
## Le fichier README.md

- Utilisation du language markdown
- Décrit le contenu du dépôt et son utilisation
- Permet de spécifier la license et autres informations si nécessaire
- On peut l'éditer directement en ligne avec le bouton

---
# 4. Installer git

## Git doit être installé sur les systèmes Windows

Instructions pour Windows[https://git-scm.com/download/win]

--

## Vérifier si Git est installé (Mac)

Ouvrir le terminal et saisir la commande suivante :

```bash
git version
```

Si la commande n'est pas reconnue, il faut installer git :
Instructions pour Mac[http://git-scm.com/download/mac]

---
# 4. Associer git avec GitHub

Il peut être nécessaire de configurer git pour qu'il puisse communiquer avec github.
Cette étape se fait plus facilement avec le package `usethis` dans la console de RStudio :

```r
# Installer le package usethis
install.packages("usethis")

## Enregistrer les informations de l'utilisateur :
usethis::use_git_config(user.name = "YourName", user.email = "your@mail.com")

## Créer un jeton d'accès :
usethis::create_github_token()
### Définir la date d'expiration comme "Aucune expiration"
### Copier le jeton d'accès dans le presse-papier

## Enregistrer le jeton d'accès :
credentials::set_github_pat()
# gitcreds::gitcreds_set()

## Redémarrer R !!!
```

---
# 4. Associer git avec GitHub

Il faut vérifier que git est bien configuré :

```r
usethis::git_sitrep()

## Votre nom d'utilisateur et e-mail devraient être
## correctement retournés.

## Aussi, le rapport devrait contenir quelque chose comme ceci :
## 'Personal access token: '<found in env var>''

## Si un message d'erreur persiste, vérifier que le fichier .Renviron est bien configuré :
## Appeler `usethis::edit_r_environ()` pour mettre à jour le fichier manuellement.
```

---
# 5. Associer un dépôt à RStudio

Sur github

- Cliquer sur le bouton "clone"
- Copier l'URL du dépôt

Dans RStudio

- *File > New Project > Version Control > Git*
+ Si cette option n'est pas disponible, consulter l'assistance ici[https://happygitwithr.com/rstudio-see-git.html]
- Copier l'URL pour cloner le dépôt
- S'assurer de placer le dépôt au bon endroit sur l'ordinateur !
- On peut ouvrir le projet ultérieurement avec *File > Open project* en sélectionnant le fichier avec l'extension .Rproj

---
# 6. Bien structurer un projet

Il est recommandé de bien organiser ses fichiers afin de s'y retrouver plus facilement. On y retrouve habituellement les éléments suivants :

- *README.md*: information sur le dépôt
- *.Rproj*: informations sur le projet R
- *.git* : informations sur l'historique d'utilisation de git
- *.gitignore*: contient les extensions de fichier ignorés par git
- **data** : données du projet ainsi que la base de données
- **scripts**: tous les scripts R
- **figures**: résultats des analyses
- **rapport**: rapport final

---
# 6. Bien structurer un projet

Organisez votre répertoire en ajoutant les nouveaux dossiers data, scripts, figures et rapport

---
# 7. Enregistrer des modifications

- Sélectionner l'onglet git dans le quadrant supérieur droit
- Cliquer sur le bouton **commit** pour enregistrer les modifications
- Résumer les modifications en une courte phrase
- Cliquer sur le bouton **push** pour verser les modifications vers le serveur
- Valider en ligne sur votre page si les modifications ont été ajoutées

---
# 7. Enregistrer des modifications


**Exercice**: créer un nouveau script dans le dossier "scripts", inscrire une commande et ensuite enregistrer les modifications
Complétez les étapes en suivant les instructions données dans le [chapitre 7, Section 7.2](https://econumuds.github.io/BIO500/git.html#d%C3%A9buter-avec-git) (complétez les étapes 0 à 3)

---
class: inverse, center, middle
@@ -357,46 +214,24 @@ MonTravailSession/

# Le journal de Git

```bash
cd Documents/Git/BIO500 # Ceci est mon chemin d'accès
git log
```
## L'historique des modifications

```bash
commit 38d4a2700980b9c765f4abdb33e2f6b598aac4d5
Author: Steve Vissault <s.vissault@yahoo.fr>
Date: Wed Feb 28 20:38:05 2018 -0500

Modifs sur plan de match

commit 61601ff86e712d0a77ebd24c5277fe55fab9de6e
Author: Steve Vissault <s.vissault@yahoo.fr>
Date: Wed Feb 28 20:33:20 2018 -0500

Modifications au cours3 (retrait slides), ajout reponses
```
.center[
![](./assets/img/rstudio_git_history.gif)
]

---

# Le journal de Git

.pull-left[

.font80[
```bash
commit 38d4a2700980b9c765f4abdb33e2f6b598aac4d5
Author: Steve Vissault <s.vissault@yahoo.fr>
Date: Wed Feb 28 20:38:05 2018 -0500

Modifs sur plan de match

commit 61601ff86e712d0a77ebd24c5277fe55fab9de6e
Author: Steve Vissault <s.vissault@yahoo.fr>
Date: Wed Feb 28 20:33:20 2018 -0500

Modifications au cours3 (retrait slides)
git log
```
]]
ou

![](./assets/img/rstudio_git_history.png)
]

.pull-right[
.center[
@@ -409,12 +244,12 @@ Date: Wed Feb 28 20:33:20 2018 -0500
# Se déplacer sur la branche `master`

.pull-left[

```bash
git checkout 4abdb33e2f6b598aac4d5
```
ou

Permet de se déplacer vers un `commit` précis.
![](./assets/img/rstudio_git_history.png)
]

.pull-right[
@@ -432,6 +267,9 @@ Permet de se déplacer vers un `commit` précis.
```bash
git checkout master
```
ou

![](./assets/img/rstudio_git_history.png)
]

Permet de se déplacer vers le `commit` le plus récent.
@@ -458,6 +296,9 @@ RStudio facilite ce travail avec un simple onglet "history" et avec un navigateu
- À chaque fois que l'on ouvre un projet il est approprié d'utiliser la commande "git pull" (un bouton sur l'interface git de Rstudio) afin de récupérer les modifications des autres membres de l'équipe
- Les restrictions d'utilisation et les invitations peuvent être gérées à partir du site web de github


![](./assets/img/rstudio_git_pull.png)

---
# La puissance de git

@@ -498,23 +339,40 @@ Un tutoriel complet est disponible ici[https://happygitwithr.com/rstudio-git-git
# Exercice

1. En équipe de 2, utiliser un dépôt créé par un des membres de l'équipe et le cloner sur l'ordinateur de l'autre membre
2. Chacun ajoute le même fichier dans le dépôt et enregistre les modifications
3. Git add, commit et push
2. Chacun modifie un même fichier présent dans le dépôt et enregistre les modifications
3. Git commit et push

Qu'est-ce qui arrive ?

--

## Un merge conflict (conflit de fusion) !!

Vous avez chacun fait des modifications sur un même fichier. Git ne sait pas quelle version prioriser.

---

# Gestion des conflits

Le conflit de de fusion est le résultat de deux modifications concurrentes sur un même fichier. C'est le conflit le plus fréquent et survient lors qu'on oublie de `git pull` avant de `git push`
Le conflit de de fusion est le résultat de deux modifications concurrentes sur un même fichier. C'est le conflit le plus fréquent et survient lorsqu'on oublie de `git pull` avant de `git push`

Il est possible de résoudre le conflit directement dans RStudio. Essayez-vous !

Marche à suivre : (https://econumuds.github.io/BIO500/git.html#conflits)[https://econumuds.github.io/BIO500/git.html#conflits]

---

# Gestion des conflits

(Chapitre 7.3 *Git, Conflits*)[https://econumuds.github.io/BIO500/git.html#conflits]

- Ouvrir le fichier en conflit
- Résoudre le conflit
- Enregistrer les modifications
- `add` (*staging*) et `commit`, `push`

![](./assets/img/rstudio-merge-conflict.png)

---

# Lectures
Binary file added bloc2/assets/img/rstudio-merge-conflict.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added bloc2/assets/img/rstudio_git_history.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added bloc2/assets/img/rstudio_git_history.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added bloc2/assets/img/rstudio_git_pull.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added livre/assets/img/git-conflict-01-push-error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added livre/assets/img/rstudio-merge-conflict.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added livre/assets/img/rstudio_git_history.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 78 additions & 9 deletions livre/git.qmd
Original file line number Diff line number Diff line change
@@ -37,7 +37,21 @@ knitr::include_graphics("./assets/img/git_1.svg", dpi = 270)
### Commandes Git de base

RStudio facilite le travail avec Git à l'aide d'un simple onglet "Git" et avec un navigateur qui vous permet de passer d'une version à l'autre et de mettre en valeur les modifications qui ont été enregistrées sous forme de commit. Cet onglet permet d'exécuter certaines opérations de base pour le contrôle de version. Voici un petit lexique pour s'y retrouver :
RStudio facilite le travail avec Git à l'aide d'un simple onglet "Git" et avec un navigateur *history* qui vous permet de passer d'une version à l'autre et de visionner les modifications qui ont été enregistrées sous forme de commit. Cet onglet permet d'exécuter certaines opérations de base pour le contrôle de version.

```{r}
#| label: git_rstudio
#| echo: false
#| out-width: 40%
#| fig-cap: |
#|
#| fig-alt: |
#| rstudio.
knitr::include_graphics("./assets/img/rstudio_git_history.gif", dpi = 270)
```

Voici un petit lexique pour s'y retrouver :


#### Git clone
@@ -87,8 +101,12 @@ GitHub est le serveur *cloud* du logiciel Git, comme OneDrive l'est pour d'autre

## Débuter avec Git

Pour débuter avec Git, il faut d'abord s'assurer que les prérequis sont bien installés et configurés. Ensuite, il faut créer un dépôt GitHub en ligne et l'associer à RStudio. Enfin, il faut apprendre à enregistrer les modifications, à revenir en arrière et à récupérer les modifications des co-équipiers.

### 0. Prérequis

Un bon point de départ est d'explorer l'interface web de GitHub. Accéder à la page du cours BIO500 et observer l'organisation des fichiers et les fonctionnalités présentées : (https://github.com/EcoNumUdS/BIO500)[https://github.com/EcoNumUdS/BIO500]

#### 0.1. Avoir un compte GitHub

Aller à la page d'accueil de GitHub [https://github.com](https://github.com). Sélectionner "sign up" et entrer les informations demandées.
@@ -136,15 +154,19 @@ Il peut être nécessaire de configurer git pour qu'il puisse communiquer avec g
```R
# Installer le package usethis
install.packages("usethis")

## Enregistrer les informations de l'utilisateur :
usethis::use_git_config(user.name = "YourName", user.email = "your@mail.com")

## Créer un jeton d'accès :
usethis::create_github_token()
### Définir la date d'expiration comme "Aucune expiration"
### Copier le jeton d'accès dans le presse-papier
### Copier le jeton d'accès dans le presse-papier (et votre gestionnaire de mot de passe)

## Enregistrer le jeton d'accès :
credentials::set_github_pat()
# gitcreds::gitcreds_set()

## Redémarrer R !!!
```

@@ -168,9 +190,11 @@ Accédez à [GitHub](https://github.com/) et connectez-vous à votre compte. Pr

- Repository template: No template.
- Repository name: Le nom de votre projet.
- Description: Une description du répertoire (non requis)
- Description: Une description du répertoire (non requis).
- Public.

Il est plus facile de collaborer avec des dépôts publics. D'autres utilisateurs peuvent voir votre code et être invité à y contribuer. Les dépôt publiques seront utiles pour votre projet final qui se fait en équipe.

### Bien structurer son projet

Il est recommandé de bien organiser ses fichiers afin de s'y retrouver plus facilement. On y retrouve habituellement les éléments suivants :
@@ -184,6 +208,10 @@ Il est recommandé de bien organiser ses fichiers afin de s'y retrouver plus fac
- **figures**: résultats des analyses
- **rapport**: rapport final

**Le fichier README.md**

Le fichier README est un fichier texte qui contient des informations sur le projet. Il est souvent utilisé pour présenter le projet à d'autres utilisateurs. Il est écrit en markdown, un langage de balisage léger qui est facile à lire et à écrire. Le fichier README.md est souvent le premier fichier que les utilisateurs verront lorsqu'ils accéderont à votre dépôt. Il est donc important de bien le rédiger. On peut l'éditer directement en ligne avec le bouton.


### 2. Associer le dépôt à RStudio

@@ -220,8 +248,9 @@ On peut ouvrir le projet ultérieurement avec File > Open project en sélectionn
Après avoir effectué des modifications aux fichiers du projet, sauver ces modifications. Par exemple, ajouter "Ceci est une ligne ajoutée à la description du projet." au fichier `README.md` et sauver la modification.

- Sélectionner l'onglet git dans le quadrant supérieur droit.
- Cliquer sur le bouton commit pour enregistrer les modifications.
- Résumer les modifications en une courte phrase (message de commit).
- Ouvrir la fenêtre *commit* pour enregistrer les modifications.
- Cocher (*staged*) les fichiers modifiés que vous souhaitez enregistrer.
- Résumer les modifications en une courte phrase (message de commit) et puis cliquer sur le bouton *commit* pour enregistrer les modifications.
- Cliquer sur le bouton "Push" pour téléverser les modifications vers le répertoire (serveur) GitHub.
- Valider en ligne sur votre répertoire GitHub si les modifications ont été ajoutées.

@@ -241,20 +270,60 @@ Les restrictions d'accès au répertoire GitHub et les invitations peuvent être

La collaboration entraine parfois des conflits entre versions. Ceci est particulièrement fréquent lorsqu'on oublie d'effectuer un Push ou un Pull pendant un certain temps. La section suivante détaille les conflits couramment rencontrés.

### 6. Supprimer un dépôt

Si vous souhaitez supprimer un dépôt de votre ordinateur, il suffit de supprimer le répertoire (dossier) du projet sur votre ordinateur. Il s'agit d'un dossier standard. Si vous souhaitez supprimer le dépôt de GitHub, aller dans les paramètres du répertoire et sélectionner "Delete this repository".


## Conflits

Lors de l'utilisation de Git, voici quelques-uns des conflits les plus fréquemment rencontrés :

1. Conflit de fusion (Merge conflict) : Ce conflit se produit lorsque Git ne parvient pas à fusionner automatiquement les modifications provenant de deux branches différentes. Il se produit généralement lorsque des modifications incompatibles sont apportées au même fichier, aux mêmes lignes de code ou lorsque des renommages de fichiers entraînent des conflits de nommage.

2. Conflit de rébase (Rebase conflict) : Lorsque vous effectuez une opération de rébase pour intégrer les modifications d'une branche dans une autre, des conflits peuvent se produire si Git ne parvient pas à appliquer automatiquement les modifications. Cela peut se produire lorsque des modifications conflictuelles sont apportées aux mêmes fichiers ou aux mêmes parties de code.
```{r}
#| label: push_error
#| echo: false
#| out-width: 40%
#| fig-cap: |
#|
#| fig-alt: |
#| push-error.
knitr::include_graphics("./assets/img/git-conflict-01-push-error.png", dpi = 270)
```

> Pour résoudre le conflit depuis RStudio, il choisir certains de vos changements ainsi que certains de ceux de votre collaborateur, vous pouvez alors éditer manuellement et corriger le fichier. Lorsque vous *pull* le fichier avec un conflit, Git remarque qu'il y a un conflit et modifie le fichier pour afficher à la fois vos propres modifications et celles de votre collaborateur dans le fichier. Il affiche également le fichier dans l'onglet Git avec une icône orange en forme de U, ce qui indique que le fichier est non fusionné et donc en attente de votre aide pour résoudre le conflit.
> Il délimite ces blocs avec une série de signes inférieurs et supérieurs, de sorte qu'ils sont faciles à trouver : Pour résoudre les conflits, il vous suffit de trouver tous ces blocs et de les éditer afin que le fichier apparaisse comme vous le souhaitez (en choisissant vos lignes, celles de votre collaborateur, une combinaison ou quelque chose de complètement nouveau) et d'enregistrer. Assurez-vous de supprimer les lignes de délimitation qui commencent par
```
<<<<<<<,
=======,
et >>>>>>>
```

Une fois que vous avez apporté ces modifications, il vous suffit d'ajouter (*staging*), de *commit* et de *push* les fichiers pour résoudre le conflit.

```{r}
#| label: merge_conflict
#| echo: false
#| out-width: 40%
#| fig-cap: |
#|
#| fig-alt: |
#| merge.
knitr::include_graphics("./assets/img/rstudio-merge-conflict.png", dpi = 270)
```


1. Conflit de rébase (Rebase conflict) : Lorsque vous effectuez une opération de rébase pour intégrer les modifications d'une branche dans une autre, des conflits peuvent se produire si Git ne parvient pas à appliquer automatiquement les modifications. Cela peut se produire lorsque des modifications conflictuelles sont apportées aux mêmes fichiers ou aux mêmes parties de code.

3. Conflit de stratégie de fusion (Merge strategy conflict) : Git offre plusieurs stratégies de fusion, telles que la fusion rapide (fast-forward), la fusion récursive (recursive) ou la fusion ours (ours). Lorsque vous spécifiez une stratégie de fusion spécifique et que celle-ci ne peut pas être appliquée en raison de conflits, un conflit de stratégie de fusion se produit.
2. Conflit de stratégie de fusion (Merge strategy conflict) : Git offre plusieurs stratégies de fusion, telles que la fusion rapide (fast-forward), la fusion récursive (recursive) ou la fusion ours (ours). Lorsque vous spécifiez une stratégie de fusion spécifique et que celle-ci ne peut pas être appliquée en raison de conflits, un conflit de stratégie de fusion se produit.

4. Conflit de nommage (Naming conflict) : Ce type de conflit se produit lorsque deux fichiers ou répertoires ont des noms similaires et que Git ne peut pas les distinguer clairement. Cela peut survenir lors de la fusion de branches contenant des fichiers ou des répertoires avec des noms conflictuels.
3. Conflit de nommage (Naming conflict) : Ce type de conflit se produit lorsque deux fichiers ou répertoires ont des noms similaires et que Git ne peut pas les distinguer clairement. Cela peut survenir lors de la fusion de branches contenant des fichiers ou des répertoires avec des noms conflictuels.

5. Conflit de ligne blanche (Whitespace conflict) : Les conflits de ligne blanche surviennent lorsque les modifications apportées à un fichier incluent des changements mineurs tels que l'ajout ou la suppression d'espaces, de tabulations ou de retour à la ligne. Ces conflits se produisent généralement lors de la fusion ou de la rébase.
4. Conflit de ligne blanche (Whitespace conflict) : Les conflits de ligne blanche surviennent lorsque les modifications apportées à un fichier incluent des changements mineurs tels que l'ajout ou la suppression d'espaces, de tabulations ou de retour à la ligne. Ces conflits se produisent généralement lors de la fusion ou de la rébase.

Il est important de noter que ces conflits sont des situations normales lors de la collaboration avec Git. Lorsqu'un conflit se produit, Git marque les zones conflictuelles dans les fichiers concernés et il vous revient de les résoudre en choisissant quelles modifications garder ou en effectuant des ajustements manuels.

0 comments on commit 15fb4a9

Please sign in to comment.