Skip to content

Commit

Permalink
Dernieres modifs geopandas (#298)
Browse files Browse the repository at this point in the history
* intro

* Relec ka 1210 (geopandas V2) (#297)

* relec geopandas TUTO

* relec geopandas TP

* coquilles de numérotations !

* Revoir la partie Git (#296)

* Automated changes

* Automated changes

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Automated changes

* Automated changes

* update

* Automated changes

* Automated changes

* featured image

* requests

* Automated changes

* Automated changes

Co-authored-by: Kim A <kim.antunez@ensae.fr>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
3 people committed Oct 13, 2022
1 parent 8df6bbc commit f394b23
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 58 deletions.
46 changes: 35 additions & 11 deletions content/course/git/_index.md
@@ -1,5 +1,5 @@
---
title: "Git: un élément essentiel au quotidien"
title: "Git: un outil nécessaire pour les data-scientists"
date: 2020-07-16T13:00:00Z
draft: false
weight: 70
Expand All @@ -8,22 +8,47 @@ icon: git-alt
icon_pack: fab
#linktitle: "Partie 4: Natural Language Processing (NLP)"
summary: |
Une partie annexe au cours pour découvrir Git, un langage
devenu indispensable pour les data-scientists et économistes
pour stocker et partager des projets Python.
Une partie annexe au cours pour découvrir `Git`,
un outil
devenu indispensable pour les data-scientists
afin de mener des projets impliquant
du code `Python`.
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`.

Une grande partie du contenu de ce chapitre provient du cours
[Travail collaboratif avec `R`](https://linogaliana.gitlab.io/collaboratif/git.html).
Une grande partie du contenu de la partie provient du cours
[Travail collaboratif avec `R`](https://linogaliana.gitlab.io/collaboratif/git.html)
ou d'un [cours dédié fait avec Romain Avouac](https://formation.pages.lab.sspcloud.fr/git/20220929-formation-git-dese/#/title-slide).

Le chapitre [de présentation de `Git`](/introgit) propose
une introduction visant à présenter l'intérêt d'utiliser
cet outil. Une mise en pratique est proposée
avec [un cadavre exquis](/exogit).

# Utilisation de git avec Python

### Configurer pycharm pour utiliser le plugin git

# Utilisation de `Git` avec `Python`

`Git` est à la fois un outil et un langage. Il
est donc nécessaire d'installer, dans un premier
temps `Git Bash`, puis de connecter
son outil préféré pour faire du `Python` (qu'il
s'agisse de `Jupyter`, `VSCode` ou `PyCharm`).

L'un des intérêts d'utiliser une approche _cloud_
est que l'utilisateur final n'a pas à se préoccuper
de l'installation de ces différentes briques.
Les interfaces `Git` sont parfois déjà
configurées pour faciliter l'usage. C'est le
cas sur le `SSPCloud`.


# Configuration

## Configurer `PyCharm` pour utiliser le plugin `Git`

Aller dans `File > Settings > Version Control > Git` pour définir le
chemin vers lequel `Pycharm` doit trouver
Expand All @@ -39,13 +64,12 @@ le sous-dossier `cmd/git.exe`)[^1]
de mot de passe tapé trop vite, les tentatives de connexion au dépôt distant seront
systématiquement refusées


### Configurer Jupyter pour utiliser le plugin git
## Configurer `Jupyter` pour utiliser le plugin `Git`

La marche à suivre est présentée
[sur cette page](https://github.com/jupyterlab/jupyterlab-git)

### Configuration Visual Studio pour utiliser `Git`
## Configurer `Visual Studio` pour utiliser le plugin `Git`

Vous pouvez par exemple vous référer à [cette documentation](https://docs.microsoft.com/fr-fr/visualstudio/version-control/git-with-visual-studio?view=vs-2019)

Expand Down
76 changes: 52 additions & 24 deletions content/course/git/introgit/index.qmd
Expand Up @@ -10,10 +10,10 @@ categories:
- Tutoriel
type: book
summary: |
Git est un système de contrôle de version qui facilite la
`Git` est un système de contrôle de version qui facilite la
sauvegarde, la gestion des évolutions et le partage
d'un projet informatique. Il s'agit d'un élément devenu
indispensable dans le domaine de la data-science.
indispensable dans le domaine de la _data-science_.
Ce chapitre présente quelques concepts qui seront
mis en pratique dans le suivant.
---
Expand All @@ -34,6 +34,9 @@ print_badges("content/course/git/introgit.qmd")
```
:::

Cette page reprend des éléments présents dans
un [cours dédié fait avec Romain Avouac](https://formation.pages.lab.sspcloud.fr/git/20220929-formation-git-dese/#/title-slide)

# Pourquoi faire du `Git` <i class="fas fa-code-branch"></i> ?

Dans un projet, il est commun de se demander (ou de demander à quelqu'un) :
Expand All @@ -45,19 +48,32 @@ Dans un projet, il est commun de se demander (ou de demander à quelqu'un) :
* comment fusionner des programmes écrits par plusieurs personnes
* etc.

![](https://pbs.twimg.com/media/EiG-dwJVkAA-J0L?format=jpg&name=medium)
```{python}
import requests
url = "https://thinkr.fr/wp-content/uploads/git_notfinal.gif"
response = requests.get(url)
if response.status_code == 200:
with open("featured.png", 'wb') as f:
f.write(response.content)
```

![](https://thinkr.fr/wp-content/uploads/git_notfinal.gif)


Il existe un outil informatique puissant qui répond à tous ces besoins : la gestion de version (*version control system* (VCS) en anglais). Ses avantages sont incontestables et permettent de facilement :
Il existe un outil informatique puissant qui répond à tous ces besoins :
la __gestion de version__ (*version control system* (VCS) en anglais). Ses avantages sont incontestables et permettent de facilement :

* enregistrer l'historique des modifications d'un ensemble de fichiers
* revenir à des versions précédentes d'un ou plusieurs fichiers
* rechercher les modifications qui ont pu créer des erreurs
* partager ses modifications et récupérer celles des autres
* 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
* enregistrer l'historique des modifications d'un ensemble de fichiers ;
* revenir à des versions précédentes d'un ou plusieurs fichiers ;
* rechercher les modifications qui ont pu créer des erreurs ;
* partager ses modifications et récupérer celles des autres ;
* 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.) car reposent sur la comparaison des lignes et des caractères des programmes.
En outre, ces outils fonctionnent avec tous les langages
informatiques (texte, `R`, `Python`, `SAS`, $\LaTeX$, `Java`, etc.)
car reposent sur la comparaison des lignes et des caractères des programmes.


On peut ainsi résumer les principaux avantages du contrôle de version
Expand All @@ -71,9 +87,14 @@ de la manière suivante :

## Conserver et archiver du code

Une des principales fonctionnalités de la gestion de version est de conserver l'ensemble des fichiers de façon sécurisée et de proposer un archivage structuré des codes. Les fichiers sont stockés dans un **dépôt**, qui constitue le projet.
Une des principales fonctionnalités de la gestion de version est de conserver
l'ensemble des fichiers de façon sécurisée et de proposer un archivage
structuré des codes. Les fichiers sont stockés dans un **dépôt**, qui constitue le projet.

Tout repose dans la gestion et la présentation de l'historique des modifications. Chaque modification (ajout, suppression ou changement) sur un ou plusieurs fichiers est identifiée par son auteur, sa date et un bref descriptif[^1]. Chaque changement est donc unique et aisément identifiable quand les modifications sont classées par ordre chronologique. Les groupes de modifications transmis au dépôt sont appelées **commit**.
Tout repose dans la gestion et la présentation de l'historique des modifications.
Chaque modification (ajout, suppression ou changement) sur un ou plusieurs fichiers est identifiée par son auteur,
sa date et un bref descriptif[^1].
Chaque changement est donc unique et aisément identifiable quand les modifications sont classées par ordre chronologique. Les groupes de modifications transmis au dépôt sont appelées **commit**.


[^1]: Plus précisément, chaque modification est identifiée de manière unique par un code `SHA` auquel est associé l'auteur, l'horodatage et des métadonnées (par exemple le message descriptif associé).
Expand Down Expand Up @@ -101,12 +122,19 @@ La gestion de version permet de collaborer simplement et avec méthode. De faço
* trouver rapidement des erreurs et en diffuser rapidement la
correction

A ces avantages s'ajoutent les fonctionalités collaboratives des sites de dépôt
(les principaux étant `Github` et `Gitlab`), qui permettent d'intéragir via
des [*issues*](https://github.com/linogaliana/python-datascientist/issues), faire des suggestions de modifications, etc.

A ces avantages s'ajoutent les fonctionalités collaboratives des __forges__
qui sont des plateformes où peuvent être stockés des dépôts.
Néanmoins, ces forges proposent aujourd'hui beaucoup de fonctionalités
qui vont au-delà de l'archivage de code:
intéragir via
des [*issues*](https://github.com/linogaliana/python-datascientist/issues),
faire des suggestions de modifications, exécuter du code dans des
environnements normalisés, etc.
Il faut vraiment les voir comme des réseaux sociaux du code.
Les principales plateformes dans ce domaine étant `Github` et `Gitlab`.

L'usage individuel, c'est-à-dire seul sur son projet, permet aussi de "travailler en équipe avec soi-même" car il permet de retrouver des mois plus tard le contenu et le contexte des modifications. Cela est notamment précieux lors des changements de poste ou des travaux réguliers mais espacés dans le temps (par exemple, un mois par an chaque année). Même lorsqu'on travaille tout seul, on collabore avec un *moi* futur qui peut ne plus se souvenir de la modification des fichiers.
L'usage individuel, c'est-à-dire seul sur son projet,
permet aussi de "travailler en équipe avec soi-même" car il permet de retrouver des mois plus tard le contenu et le contexte des modifications. Cela est notamment précieux lors des changements de poste ou des travaux réguliers mais espacés dans le temps (par exemple, un mois par an chaque année). Même lorsqu'on travaille tout seul, on collabore avec un *moi* futur qui peut ne plus se souvenir de la modification des fichiers.



Expand Down Expand Up @@ -140,11 +168,11 @@ qu'on rend généralement visible au moyen de badges

Il existe plusieurs manières d'utiliser le contrôle de version :

* en ligne de commande, via [git bash](https://gitforwindows.org/), par exemple ;
* avec une interface graphique spécialisée, par exemple [tortoise git](https://tortoisegit.org/) ou [GitHub Desktop](https://desktop.github.com/) ;
* en ligne de commande, via [Git Bash](https://gitforwindows.org/), par exemple ;
* avec une interface graphique spécialisée, par exemple [Tortoise Git](https://tortoisegit.org/) ou [GitHub Desktop](https://desktop.github.com/) ;
* avec un logiciel de développement : la plupart des logiciels de développement ([RStudio](https://www.book.utilitr.org/git.html) pour `R`, [PyCharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html), [jupyter](https://annefou.github.io/jupyter_publish/02-git/index.html) ou encore
[visual studio (extension GitLens)](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)
pour `python`, proposent tous des modules graphiques facilitant l'usage de `Git`.
[Visual Studio (extension GitLens)](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)
pour `Python`, proposent tous des modules graphiques facilitant l'usage de `Git`.


`Git` a été conçu, initialement pour la ligne de commande. Il existe
Expand Down Expand Up @@ -183,8 +211,8 @@ infructueuse) ;
collectif qu'on doit s'assurer de la cohérence avec la version disponible
en ligne (système *asynchrone*).

Le dépôt distant est généralement stocké sur une **forge
logicielle** (`Github` ou `Gitlab`) et sert à centraliser la version
Le dépôt distant est généralement stocké sur
une **forge logicielle** (`Github` ou `Gitlab`) et sert à centraliser la version
collective d'un projet. Les copies locales sont des copies de travail
qu'on utilise pour faire évoluer un projet:

Expand Down

0 comments on commit f394b23

Please sign in to comment.