# Contrôle de version Sur cette page, vous trouverez des explications sur ce qu'est un contrôleur de version Git, comment créer vos propres dépôts Git sur les plateformes GitHub et GitGenes, ainsi que la manière de les paramétrer pour les associer à vos services datalab Onyxia. Cela vous permettra entre autres de cloner, sauvegarder vos données stockées sur vos services, et ainsi garantir une gestion efficace de vos travaux. ## Mise en garde Avant de vous détailler tout sur le contrôleur de version Git, nous voulons vous rappeler via ce paragraphe que quand vous créez un service sur le datalab Onyxia, aucunes des données que vous importer sur les services n'est persistantes, sauf pour les services de bases de données (Postgresql, Mongodb, etc…) qui eux, disposent d'un stockage persistant. Les services du Datalab fonctionnent sur le modèle des conteneurs éphémères : dans un usage standard, l'utilisateur lance un service, réalise des traitements de données, sauvegarde le code qui a permis de réaliser ces traitements, et supprime l'instance du service. Vous avez donc deux choix, celle que nous préconisons aux utilisateurs est d'automatiser ce processus d'import/export/synchronisation de données en utilisant un contrôleur de version Git qui vous sera entièrement expliqué sur cette page à la suite de ce paragraphe de mise en garde. Ou d'importer manuellement vos données à la création de votre service puis de télécharger les données stockées sur vos services avant chaque arrêt d'utilisation. Git, qui est la méthode que nous préconisons, est un système de gestion de version qui permet aux utilisateurs de suivre l'évolution de leurs fichiers au fil du temps, le plus connu étant GitHub. Dans le cadre de nos services, nous simplifions ce processus : tous les utilisateurs ayant un compte ENSAE se voient automatiquement attribuer un compte GitGenes. GitGenes est notre système Git hébergé en interne, utilisant la solution Gitea et offrant des fonctionnalités similaires à celles de GitHub ou GitLab. Il facilite la création, la gestion et la collaboration autour de dépôts Git, celui-ci est disponible ici. Sacher que par défaut, le datalab Onyxia est préconfiguré avec votre compte GitGenes. Les utilisateurs n'ont plus qu'à créer un dépôt sur leur compte GitGenes, puis, spécifier l'URL de ce dépôt dans nos services datalab Onyxia. Cela permettra qu'à la création d'un service, les données stockées sur votre dépôt seront automatiquement clonées sur votre service datalab Onyxia. Liens utiles : - Où ajouter l'URL d'un dépôt Git lors de la configuration de vos services du datalab Onyxia - Comment créer et récupérer l'URL d'un dépôt sur GitGenes ou Github ## Pourquoi utiliser le contrôle de version ? Le Datalab est une plateforme mutualisée : les ressources utilisées par les services sont partagées entre les différents utilisateurs. A ce titre, les services du Datalab fonctionnent sur le modèle des conteneurs éphémères : dans un usage standard, l'utilisateur lance un service, réalise des traitements de données, sauvegarde le code qui a permis de réaliser ces traitements, et supprime l'instance du service. Cette sauvegarde du code est grandement facilitée par l'usage du contrôle de version. Cette considération de performance ne doit cependant pas être vue comme une contrainte : le contrôle de version est une bonne pratique essentielle de développement. Les bénéfices sont nombreux, aussi bien à titre individuel : * le projet local est synchronisé avec un serveur distant, rendant la perte de code quasi impossible ; * l'historique complet des choix et modifications effectuées sur le projet est conservé ; * l'utilisateur peut parcourir cet historique pour rechercher les modifications qui ont pu créer des erreurs, et décider à tout moment de revenir à une version précédente du projet, ou bien de certains fichiers. Dans le cadre de projets collaboratifs : * le travail simultané sur un même projet est possible, sans risque de perte ; * l'utilisateur peut partager ses modifications tout en bénéficiant de celles des autres ; * il devient possible de contribuer à des projets open-source, pour lesquels l'usage de Git est très largement standard. !!! warning Ce tutoriel vise à présenter comment le contrôle de version peut être facilement implémenté grâce aux outils présents sur le Datalab. Il ne présente pas le fonctionnement de Git et présuppose donc une certaine familiarité avec l'outil. De nombreuses ressources en ligne peuvent servir d'introduction ; l'utilisateur de R pourra par exemple consulter ce guide. Une formation complète à Git sera bientôt proposée dans l'espace formation du Datalab qui sera bientôt ajouter sur notre Datalab Onyxia. ## Intégration de Git avec le Datalab ### Pourquoi Git ? Bien qu'une utilisation hors-ligne de Git soit possible, tout l'intérêt du contrôle de version réside dans la synchronisation de la copie locale d'un projet (_clone_) avec un dépôt distant (_remote_). Différents services de forge logicielle permettent cette synchronisation des projets Git, dont les plus connus sont Github et GitLab. Dans la mesure où le premier dispose aujourd'hui de beaucoup plus de visibilité — par exemple, les dépôts du Genes, sont hébergé en interne via Gitea accessible ici. Vous disposer donc automatiquement d'un dépôt GitGenes, que vous pouvez accéder en utilisant votre compte ENSAE. Celui-ci est également automatiquement intégré sur votre compte du datalab comme décrit ici. le Datalab propose une intégration facilitée avec Git, que nous vous présentons à travers ce tutoriel. La suite du guide vous permettra de configurer GitHub & GitGenes sur le datalab à deux endroits: - Dans l'onglet Services externes qui ajoutera la configuration de votre dépôt git automatiquement sur chaques service qui vous créé (plus d'information sur notre guide principal ici ) - Lors de la création d'un Services Le guide montre en détail comment récupérer les informations suivantes sur Github & GitGenes: - Nom d'utilisateur pour Git - Email pour Git - Jeton d'accès personnel (Token) - URL Repository !!! tip La suite du tutoriel nécessite de disposer d'un compte GitHub ou GitGenes. !!! info Si l'utilisation du Datalab avec la plateforme GitHub & GitGenes est facilitée, elle n'est en aucun cas obligatoire : il reste tout à fait possible d'utiliser la forge logicielle de son choix pour la synchronisation des projets. ### Récuperer votre nom d'utilisateur et email === "Github" Votre nom d'utilisateur et email sont directement récupérable sur ce lien (paramètres utilisateur puis "Email").  === "GitGenes" Vous retrouverez automatiquement votre nom d'utilisateur dans votre compte GitGenes disponible ici (paramètres utilisateur).  Votre nom d'utilisateur sera systématiquement composé tout attaché de la première lettre de votre prénom + votre nom + "-ensae" exemple: - Nom: Houdin ; Prenom: Christophe - Nom d'utilisateur: hchristophe-ensae ### Créer un jeton d'accès (_token_) Le jeton d'accès n'est affiché q'une seul fois après sa création et n'est plus récupérable par la suite. Si vous perdez votre token vous devrer simplement en recréé un : === "Github" La synchronisation avec un dépôt distant nécessite une authentification auprès de GitHub. Celle-ci s'effectue à l'aide d'un jeton d'accès personnel, qui doit être généré à partir du compte GitHub de l'utilisateur. Le service de génération est accessible à cette adresse. La documentation GitHub(en Anglais) propose des illustrations pour guider le processus. Pour générer un jeton, il est nécessaire de choisir un nom de jeton, un délai d'expiration et des droits d'accès (_scope_). Il est recommandé de choisir un délai court (30 jours) et un accès restreint (_repo_ seulement) afin de limiter les risques de sécurité en cas de diffusion malveillante du jeton.