{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cours Science de données - IFRISSE 2020 - PART4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Gérer éfficacement vos dépôts de codes : Contrôle de Versions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En tant que Data Scientist, vous êtes amené à écrire permanament des codes pour vos différents projets. L'objectif de ce mini cours est d'introduire les solutions les plus utiliées pour gérer éfficacement vos codes. Les faits marquants généralement rencontrés sont entre autres:\n", "\n", "* Sur un même projet, vous aurez à produire plusieurs versions, soit pour améliorer vos codes par des modifications ou des ajouts. Ex: modififer le nom d'un fichier, changer une fonction dans un script, ajouter des données, etc.\n", "\n", "* Plusieurs personnes peuvent travailler à la fois sur un même projet. \n", " \n", "Il est donc necessaire de trouver une solution permettant de suivre et de gérer vos données que vous produisez.\n", "\n", "L'objectif principal du contrôle des versions vous permet de garder une trace de votre travail et vous aide à explorer facilement les modifications que vous avez apportées, qu'il s'agisse de données, de codes, de notes, etc. \n", "\n", "\n", "Le fait de disposer d'un système de contrôle de versions, vous permet de suivre facilement les projets collaboratifs et personnels - tous les fichiers nécessaires à certaines analyses peuvent être conservés ensemble et chacun peut ajouter ses codes, ses graphiques, etc. au fur et à mesure de l'évolution des projets. \n", "\n", "Chaque fichier a un historique, ce qui permet d'explorer facilement les changements qui lui ont été apportés à différents moments. Vous pouvez examiner le code d'autres personnes, ajouter des commentaires sur certaines lignes ou sur l'ensemble du document, et suggérer des modifications." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il exist plusieurs outils permettant d'éffectuer des contrôles de versions. Chacun ayant ses avantages et ses inconvenients. Nous avons entre autres Git, CVS, SVN, etc. accéder ce **https://www.softwaretestinghelp.com/version-control-software/** pour plus de détails.\n", "\n", "Dans cette étude, nous allons explorer la solution Git, la plus couremment utilisée par les dévéloppeurs pour tout ce qui est contrôle de versions et suivi de codes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Installation**\n", "\n", "Git est essentiellement un programme qui fonctionne en ligne de commande. Vous travaillerez avec Git en utilisant les commandes de Git presque tout le temps. \n", "\n", "Vous pouvez installer Git sur votre système en utilisant un gestionnaire de paquets, un installateur ou à partir des sources. Toutes les instructions sont disponibles sur le site **https://git-scm.com/book/en/v2/Getting-Started-Installing-Git**.\n", "\n", "Une installation de git doit avoir un dépôt distant (remote codebase) où s'accumulent les modifications faites par vous ou vos collaborateurs. Les deux sites d'hébergement de dépôts Git les plus populaires sont **GitHub** et **GitLab**, mais vous pouvez également choisir d'héberger votre propre dépôt distant sur un serveur.\n", "\n", "Si vous n'êtes pas à l'aise avec les commandes Git, vous pouvez utiliser leur interface graphique officielle qui vous sera proposée après l'installation de Git sur votre machine.\n", "\n", "Pour installer GitHub, vous pouvez télécharger l'application GUI officielle sur **https://desktop.github.com/**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 1 : Créer votre compte et connectez-vous sur le site une fois Github installé" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 2 : Configurer Git en utilisant les cmds suivantes" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git config --global user.name \"Your name\"\n", "git config --global user.email \"yourname@provider.com\"\n", "\n", "Vous pouvez vérifier votre config avec la commande : git config --list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 3 : Initializing Git Repository" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git init" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 4 : Créer un dépôt distant et lier son url à votre Git que vous venez d'initialiser" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git remote add \"origin\" \"repo-url\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 5 : Si votre dépôt distant contient déjà des fichiers de code, vous devez les placer dans votre dépôt local." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git pull \"repo-url\"\n", "\n", "## pull est tuilisé pour apporter les changements à leur dépôt local." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 6 : Vous pouvez récupérer votre dépot distant dans votre git" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git clone \"repo-url\" \"destination (optional)\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Setp 7 : Vous pouvez vérifier si un référentiel local suit le référentiel distant à l'aide." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ " git remote -v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 8 : Ajoutons des données dans notre git et vérifions sont état avec status\n", "\n", "* les fichiers en rouges sont soitent de nouveaux fichiers, changés ou supprimés dans le repertoire\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git status\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 9 : Nous pouvons maitenant déplacer ces fichiers vers la zone de transit (entre le rep local et distant)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git add 'nom fichier' #pour un fichier specifique\n", "git add -A # tout les fichiers\n", "git add -u # pour mettre à jour les fichiers ayant subis des modifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 10 : Preparer et ajouter des informations sur les données à soumettre. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git commit -m 'inserer un msg ou commentaire' \n", "\n", "git log # pour verifier tous les commits des autres developpeurs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 11 : Envoyer les données sur le repertoire distant" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "git push - u \"origin\" master" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 12 : Vérifier que les données sont bien présentes dans le repertoire distant" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Step 13 : Par prudence, vous pouvez recuperer les données actualisées en utilisant \"git clone\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# END" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# RÉFÉRENCES" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- https://www.softwaretestinghelp.com/version-control-software/\n", "- https://ourcodingclub.github.io/tutorials/git/\n", "- https://desktop.github.com/\n", "- https://medium.com/sysf/become-a-git-pro-in-just-one-blog-a-thorough-guide-to-git-architecture-and-command-line-interface-93fbe9bdb395" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }