Skip to content

Commit

Permalink
Relecture Git (#300)
Browse files Browse the repository at this point in the history
* Relec KA 13/10 (git) (#2)

* git intro

* git cours

* git exos 1 à 8

* fin relecture exos

Co-authored-by: antuki <kim.antunez@ensae.fr>

* Update content/course/git/exogit/index.qmd

* Update content/course/git/exogit/index.qmd

* Update content/course/git/exogit/index.qmd

* Update content/course/git/introgit/index.qmd

Co-authored-by: Kim Antunez <108084126+kantunez@users.noreply.github.com>
Co-authored-by: Lino Galiana <33896139+linogaliana@users.noreply.github.com>

Co-authored-by: Kim A <kim.demarty@laposte.net>
Co-authored-by: Kim Antunez <108084126+kantunez@users.noreply.github.com>
  • Loading branch information
3 people committed Oct 14, 2022
1 parent f394b23 commit 34cc32c
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 45 deletions.
2 changes: 1 addition & 1 deletion content/course/git/_index.md
Expand Up @@ -17,7 +17,7 @@ type: book
---

Cette partie du site présente un élément qui n'est pas propre à
`Python` mais qui est néanmoins indispensable: la pratique de `Git`.
`Python` mais qui est néanmoins indispensable : la pratique de `Git`.

Une grande partie du contenu de la partie provient du cours
[Travail collaboratif avec `R`](https://linogaliana.gitlab.io/collaboratif/git.html)
Expand Down
91 changes: 49 additions & 42 deletions content/course/git/exogit/index.qmd
Expand Up @@ -14,10 +14,6 @@ summary: |
centraux du langage Git vus précédemment
---

<!--- Inspirations
https://github.com/corent01/03-Swartz/blob/master/Parcours/01-La-prairie/git/exercice-git-cadavre-exquis.md
https://github.com/simplonco/cadavre-request
------>

::: {.cell .markdown}
```{python}
Expand All @@ -44,30 +40,36 @@ du cadavre exquis, qui m'a été inspirée par

Cette partie part du principe que les concepts généraux de Git sont
maîtrisés et qu'un environnement de travail fonctionnel avec `Git` est
disponible. Un exemple de tel environnement est le JupyterLab du
SSPCloud où une extension
disponible. Un exemple de tel environnement est le`JupyterLab` du
`SSPCloud` où une extension
`Git` est pré-installée:

[![Onyxia](https://img.shields.io/badge/SSPcloud-Tester%20via%20SSP--cloud-informational&color=yellow?logo=Python)](https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true&onyxia.friendlyName=«python-datascientist»&resources.requests.memory=«4Gi»&security.allowlist.enabled=false)
<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>


Outre le [chapitre précédent](#introgit), il existe de
nombreuses ressources sur internet sur le sujet, notamment
[le cours de Git déjà cité](https://linogaliana.gitlab.io/collaboratif/git.html)
et des ressources `utilitR`
nombreuses ressources sur internet sur le sujet. Parmi-celles auquel
j'ai contribué, vous pourrez trouver un
[cours de `Git` orienté gestion de projet](https://linogaliana.gitlab.io/collaboratif/git.html),
une version plus
légère à partir de [_slides_](https://formation.pages.lab.sspcloud.fr/git/20220929-formation-git-dese/#/title-slide)
et des ressources de la documentation collaborative sur `R` qu'est `utilitR`
([des éléments sur la configuration](https://www.book.utilitr.org/git-config.html)
et [pratique sur RStudio](https://www.book.utilitr.org/git.html)).
et [pratique sur RStudio](https://www.book.utilitr.org/git.html)). Toutes
les ressources ne sont donc pas du `Python` car `Git` est un outil tranversal
qui doit servir quelque soit le langage de prédilection.

L'idée de ce chapitre est d'amener, progressivement, à la mise en oeuvre
de pratiques collaboratives devenues standards dans le domaine de l'open-source
de pratiques collaboratives devenues standards dans le domaine de l'_open-source_
mais également de plus en plus communes dans les administrations et entreprises
de la data-science.
de la _data-science_.

Ce chapitre propose d'utiliser l'extension Git de JupyterLab.
Ce chapitre propose d'utiliser l'extension `Git` de `JupyterLab`.
Un tutoriel présentant cette extension est disponible
[ici](https://annefou.github.io/jupyter_publish/02-git/index.html).
Les principaux IDE disponibles (Visual Studio,
PyCharm, RStudio) présentent des fonctionalités similaires. Il est
tout à fait possible d'en utiliser un autre. VisualStudio propose
tout à fait possible d'en utiliser un autre. `VisualStudio` propose
probablement, à l'heure actuelle, l'ensemble le plus complet.

Certains passages de ce TD nécessitent d'utiliser la ligne de commande.
Expand Down Expand Up @@ -126,12 +128,12 @@ manière, on peut tout à fait connecter des dépôts `Gitlab` et `Github`.

[^1]: Dans sa version en ligne, `Github` (<https://github.com>)
dispose de plus de visibilité que `Gitlab` (<https://gitlab.com>).
L'avantage que comportait Gitlab par rapport à Github
L'avantage que comportait `Gitlab` par rapport à `Github`
à une époque, à savoir la possibilité de disposer gratuitement de ressources
pour faire de l'intégration continue, c'est résorbé depuis que Github
a lancé son service Github Actions. Cependant, être familiarisé à
l'environnement Gitlab reste utile car beaucoup de forges logicielles
internes reposent sur les fonctionalités open-source (l'interface graphique
pour faire de l'intégration continue, n'existe plus depuis que `Github`
a lancé son service `Github Actions`. Cependant, être familiarisé à
l'environnement `Gitlab` reste utile car beaucoup de forges logicielles
internes reposent sur les fonctionalités _open-source_ (l'interface graphique
en faisant parti) de `Gitlab`. Il est donc fort utile de maîtriser
les fonctionalités coeur de ces deux interfaces qui sont en fait quasi-identiques.

Expand Down Expand Up @@ -238,16 +240,17 @@ où l'intégration continue est nécessaire)

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

*Settings > Developers Settings > Personal Access Token > Generate a new token > "My bash script" > Expiration "01/03/2022" > cocher juste "repo" > Generate token > Le copier*
*Settings > Developers Settings > Personal Access Token > Generate a new token > "My bash script" > Expiration "30 days" > cocher juste "repo" > Generate token > Le copier*


:two: Ouvrir un terminal depuis `Jupyter` (par exemple `File > New > Terminal`).
:three: Taper dans le terminal la commande

:three: [Optionnel] Taper dans le terminal la commande
qui convient selon votre système d'exploitation pour activer le
`credential helper`:

```shell
# Sous mac et linux
# Sous mac et linux et le datalab
git config --global credential.helper store

# Sous windows
Expand All @@ -270,9 +273,9 @@ git clone repo_url
`repo_url` est l'url du dépôt en question (vous pouvez utiliser
<kbd>MAJ</kbd>+<kbd>Inser</kbd> pour coller l'url précédemment copié)

Tapez <kbd>Entrée</kbd>. Si vous n'avez pas d'erreur, cela signifie
Tapez <kbd>Entrée</kbd>. Dans le cas d'un répertoire privé et sans credential helper, renseignez ensuite votre identifiant, faites <kbd>Entrée</kbd>, puis votre personal access token, <kbd>Entrée</kbd>. Si vous n'avez pas d'erreur, cela signifie
que l'authentification a bien fonctionné et donc que tout va
bien. Normalement, si vous avez créé un dépôt vide dans l'exercice 1,
bien. Sinon, il vous suffit de réécrire l'instruction `git clone` et de retenter de taper votre personal access token. Normalement, si vous avez créé un dépôt vide dans l'exercice 1,
vous avez un message de `Git`:

> warning: You appear to have cloned an empty repository.
Expand All @@ -287,6 +290,8 @@ votre *credential helper*
:six: Si vous le désirez, vous pouvez changer la visibilité de votre dépôt
en le rendant public.

[^3]: Comme le créateur de `Git` était un peu paranoiaque, il est normal de ne pas voir le curseur avancer quand on tape des caractères pour le mot de passe, si quelqu'un regarde votre écran il ne pourra ainsi pas savoir combien de caractères comporte votre mot de passe.

{{% /box %}}

{{% box status="note" title="Note" icon="fa fa-comment" %}}
Expand Down Expand Up @@ -326,7 +331,7 @@ qui gère les fichiers exclus du contrôle de version.
:one: Créer un fichier nommé `.gitignore` (:warning: ne pas changer
ce nom, et s'assurer que celui-ci n'a pas d'extension) via le bloc note ou votre IDE.

Sur la session jupyter d'Onyxia, vous pouvez faire : `File > New > Text file`. Un fichier `untitled.txt` se crée, que vous pouvez renommer en faisant un `Clic droit > rename` dans l'arborescence des fichiers du projet.
Sur la session `Jupyter` d'`Onyxia`, après vous être assurés que vous vous situez bien dans le dossier <nom_du_projet> de l'arborescence, vous pouvez faire : `File > New > Text file`. Un fichier `untitled.txt` se crée, que vous pouvez renommer en faisant un `mv untitled.txt .gitignore` dans le terminal.

:two: Aller sur le site <https://www.toptal.com/developers/gitignore>. Vous pouvez
dans la barre de recherche taper `Python`, `Pycharm`, `JupyterNotebooks`.
Expand Down Expand Up @@ -373,11 +378,15 @@ ajouter la ligne suivante dans le fichier `.gitignore`

On a créé un fichier `.gitignore` mais on n'a encore rien fait jusqu'à présent.

En effet, si en ligne de commande, on tape
En effet, si en ligne de commande, on tape :

```shell
cd <nom_du_projet>
```

Puis :

```shell
# Taper
# cd <nom_du_projet> puis
git status
```

Expand Down Expand Up @@ -449,7 +458,7 @@ ne sont pas encore archivées. Pour cela, il va falloir faire un

:four: Avant cela, regardons les modifications qu'on va prochainement
valider. Pour cela, passez la souris au dessus du nom du fichier
`.gitignore` et cliquer sur le bouton `Diff this file`.
`.gitignore` et cliquer sur le bouton `Diff this file` (+ -).
Une page s'ouvre et met en regard la version antérieure avec
les ajouts en vert et les suppressions en rouge. Nous retrouverons
cette visualisation avec l'interface `Github`, plus tard.
Expand Down Expand Up @@ -511,12 +520,13 @@ Tout se passe dans la partie inférieure de l'interface graphique.
:one: Entrer le titre `Initial commit` et ajouter une description
`Création du fichier .gitignore : tada :` (sans les espaces autour des `:`).
`: tada :` (sans les espaces) sera converti en emoji :tada: par `Github` quand on voudra
afficher la description du commit[^3].
afficher la description du commit[^4].

[^3]: `:XXXXXX:` permet, dans des systèmes qui reposent sur `Markdown`, d'afficher
[^4]: `:XXXXXX:` permet, dans des systèmes qui reposent sur `Markdown`, d'afficher
des emojis. Vous pouvez [trouver une liste ici](https://gist.github.com/rxaviers/7360908)



Le fait de nommer le premier commit *"Initial commit"* est une
habitude, vous
n'êtes pas obligé de suivre cette convention si elle ne vous plaît pas.
Expand Down Expand Up @@ -641,11 +651,8 @@ vous demande pas vos identifiants de connexion. Sinon,
il faut taper
votre identifiant github et **votre mot de passe correspond au personal access token nouvellement créé** !

<!-- (:warning: -->
<!-- comme le créateur de `Git` était un peu paranoiaque, c'est normal -->
<!-- de ne pas voir le curseur avancer quand on tape des caractères pour le mot de passe, -->
<!-- si quelqu'un regarde votre écran il ne pourra ainsi pas savoir combien de -->
<!-- caractères comporte votre mot de passe) -->



:two: Retournez voir le dépôt sur `Github`, vous devriez maintenant voir le fichier
`.gitignore` s'afficher en page d'accueil.
Expand Down Expand Up @@ -695,7 +702,7 @@ Sautez une ligne et entrez le texte que vous désirez, sans ponctuation. Par exe
le chêne un jour dit au roseau
~~~

:three: Cliquez sur l'onglet `Preview` pour voir le texte mis en forme
:three: Cliquez sur l'onglet `Preview` pour voir le texte mis en forme au format `Markdown`

:four: Rédiger un titre et un message complémentaire pour faire le `commit`. Conserver
l'option par défaut `Commit directly to the master branch`
Expand Down Expand Up @@ -728,7 +735,7 @@ commande et taper
git pull origin master
~~~

Cela signifie: *"git récupère (`pull`) les modifications sur la
Cela signifie : *"git récupère (`pull`) les modifications sur la
branche `master` vers mon dépôt (alias
`origin`)"*

Expand All @@ -740,7 +747,7 @@ ou de la ponctuation.

{{% /box %}}

L'opération `pull` permet:
L'opération `pull` permet :

1. A votre système local de vérifier les modifications sur le dépôt distant
que vous n'auriez pas faites (cette opération s'appelle `fetch`)
Expand Down Expand Up @@ -978,7 +985,7 @@ En ligne de commande, cela donnera:
git clone https://github.com/<username>/<reponame>.git
~~~

:three: Chaque membre du projet crée un fichier avec son nom et son prénom, selon cette structure `nom-prenom.md` en évitant les caractères spéciaux. Il écrit dedans trois phrases de son choix **sans ponctuation ni majuscules** (pour pouvoir effectuer une correction ultérieurement. Enfin, il commit sur le projet.
:three: Chaque membre du projet crée un fichier avec son nom et son prénom, selon cette structure `nom-prenom.md` en évitant les caractères spéciaux. Il écrit dedans trois phrases de son choix **sans ponctuation ni majuscules** (pour pouvoir effectuer une correction ultérieurement). Enfin, il commit sur le projet.

Pour rappel, en ligne de commande cela donnera les commandes suivantes à modifier

Expand Down Expand Up @@ -1042,7 +1049,7 @@ Dans la continuité de l'exercice précédent, chaque personne va travailler sur

:three: Valider les résultats (`git add .` et `commit`) et faire un `push`

:four: La personne la plus rapide n'a, normalement, rencontré aucune difficulté (elle peut s'arrêter temporairement pour regarder ce qui va se passer chez les voisins, en respectant la distanciation sociale :mask:). Les autres voient leur `push` refusé et doivent faire un `pull`.
:four: La personne la plus rapide n'a, normalement, rencontré aucune difficulté (elle peut s'arrêter temporairement pour regarder ce qui va se passer chez les voisins). Les autres voient leur `push` refusé et doivent faire un `pull`.

:boom: Il y a conflit, ce qui doit être signalé par un message du type:

Expand Down
6 changes: 4 additions & 2 deletions content/course/git/introgit/index.qmd
@@ -1,5 +1,5 @@
---
title: "Git: un élément essentiel au quotidien"
title: "Git : un élément essentiel au quotidien"
date: 2020-09-30T13:00:00Z
draft: false
weight: 10
Expand Down Expand Up @@ -49,6 +49,7 @@ Dans un projet, il est commun de se demander (ou de demander à quelqu'un) :
* etc.

```{python}
#| echo: false
import requests
url = "https://thinkr.fr/wp-content/uploads/git_notfinal.gif"
response = requests.get(url)
Expand All @@ -71,8 +72,9 @@ la __gestion de version__ (*version control system* (VCS) en anglais). Ses avant
* proposer des modifications, les discuter, sans pour autant modifier d'emblée la dernière version existante ;
* identifier les auteurs et la date des modifications.


En outre, ces outils fonctionnent avec tous les langages
informatiques (texte, `R`, `Python`, `SAS`, $\LaTeX$, `Java`, etc.)
informatiques (texte, `R`, `Python`, `SAS`, ``LaTeX`, `Java`, etc.)
car reposent sur la comparaison des lignes et des caractères des programmes.


Expand Down

0 comments on commit 34cc32c

Please sign in to comment.