diff --git a/content/course/git/_index.md b/content/course/git/_index.md index 675d8ffec..10512a542 100644 --- a/content/course/git/_index.md +++ b/content/course/git/_index.md @@ -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) diff --git a/content/course/git/exogit/index.qmd b/content/course/git/exogit/index.qmd index 9ab617ab2..e5ac4aba4 100644 --- a/content/course/git/exogit/index.qmd +++ b/content/course/git/exogit/index.qmd @@ -14,10 +14,6 @@ summary: | centraux du langage Git vus précédemment --- - ::: {.cell .markdown} ```{python} @@ -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) +Onyxia + 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. @@ -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` () dispose de plus de visibilité que `Gitlab` (). -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. @@ -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 @@ -270,9 +273,9 @@ git clone repo_url où `repo_url` est l'url du dépôt en question (vous pouvez utiliser MAJ+Inser pour coller l'url précédemment copié) -Tapez Entrée. Si vous n'avez pas d'erreur, cela signifie +Tapez Entrée. Dans le cas d'un répertoire privé et sans credential helper, renseignez ensuite votre identifiant, faites Entrée, puis votre personal access token, Entrée. 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. @@ -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" %}} @@ -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 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 . Vous pouvez dans la barre de recherche taper `Python`, `Pycharm`, `JupyterNotebooks`. @@ -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 +``` + +Puis : ```shell -# Taper -# cd puis git status ``` @@ -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. @@ -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. @@ -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éé** ! - - - - - + + :two: Retournez voir le dépôt sur `Github`, vous devriez maintenant voir le fichier `.gitignore` s'afficher en page d'accueil. @@ -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` @@ -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`)"* @@ -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`) @@ -978,7 +985,7 @@ En ligne de commande, cela donnera: git clone https://github.com//.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 @@ -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: diff --git a/content/course/git/introgit/index.qmd b/content/course/git/introgit/index.qmd index 56e2f31fe..42db2e29c 100644 --- a/content/course/git/introgit/index.qmd +++ b/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 @@ -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) @@ -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.