M3206 — TD #3

Intégration multimédia S3


Git et GitLab

Quelle est la dernière version ?

Fichier-v3.txt contient-il les modifications de Fichier-v2-modifs.txt ?

Quelle est la différence entre Fichier3.txt et Fichier-v3.txt ?

Problèmes quand on travaille en équipe :

  • Ai-je la dernière version ?
  • Mon travail a été intégré, ou écrasé par la version d'un collègue ?
  • Qui a fait les modifications qui ne marchent pas ? Depuis quand ?
  • ...

Git

Git est un logiciel de gestion de versions conçu pour le travail en équipe. Il permet de :

  • Enregistrer les versions des fichiers
  • Conserver l'historique des versions avec date, auteur et commentaire
  • Voir la différence entre deux versions d'un fichier
  • Fusionner les modifications faites par deux personnes sur un même fichier

Git est souvent utilisé pour travailler en équipe. Dans ce cas, les fichiers doivent être stockés dans un serveur distant.

Plusieurs options : GitLab, GitHub, BitBucket…

GitLab

GitLab est une application web en complément de Git pour vous aider à gérer le projet :

  • Visualisation de l'historique
  • Partage des fichiers
  • Comparaison de fichier
  • Outils de gestion de projet : tickets, tableaux «Trello», wiki

Notre université a son propre serveur GitLab : etulab.univ-amu.fr. Votre compte est déjà créé et vous n'avez qu'à vous connecter avec vos identifiants de l'ENT.

L'avantage par rapport aux serveurs généraux (github.com, gitlab.com) est que vous aurez accès à des fonctionnalités payantes, comme les projets privés.

En bref

  • Git : logiciel de gestion de versions
  • GitLab : extension pour le travail collaboratif
  • On utilise normalement les deux ensemble

Démarrage

Installation de Git (Windows)

  1. Téléchargez le fichier d'installation ici
  2. Lancez l'installation. Laissez tous les réglages par défaut.
  3. Vérifiez l'installation : ouvrez l'application « Git Bash » et tapez git --version

Installation de Git (Mac)

  1. Téléchargez le fichier d'installation ici
  2. Lancez l'installation avec clic droit puis Ouvrir. Laissez tous les réglages par défaut.
  3. Vérifiez l'installation : ouvrez le terminal (+Espace, Terminal) et tapez git --version

Installation de Git (Linux)

Sur Ubuntu, ouvrez le terminal et faites :

sudo apt-get install git
sudo apt-get install git-gui
sudo apt-get install gitk
git --version

Paramétrage de Git

Ouvrez Git Bash (Windows) ou le Terminal (Mac, Linux) et tapez :

git config --global user.name "Prenom Nom"
git config --global user.email "prenom.nom@etu.univ-amu.fr"
git config --global --list

Utilisez votre vrai nom et adresse e-mail universitaire pour que la suite du démarrage se déroule correctement

Maintenant Git est installé sur votre ordinateur. Pour collaborer avec d'autres personnes il vous faut utiliser un serveur distant (comme GitLab).

Pour vous connecter au serveur distant, vous devez ajouter votre clé SSH pour vous identifier.

Génération de clé SSH

Ouvrez Git Bash (Windows) ou le Terminal (Mac, Linux) et tapez :

ssh-keygen -t ed25519 -C "prenom.nom@etu.univ-amu.fr"

Tapez sur Entrée pour avancer et laisser les réglages par défaut.

Exercice 1

Effectuez ces étapes (installation, paramétrage, clé SSH) sur votre ordinateur.

Paramétrage du compte GitLab

  1. Allez sur le etulab.univ-amu.fr
  2. Cliquez sur l'avatar puis Settings/SSH keys
  3. Pour ajouter votre clé SSH, ouvrez Git Bash/Terminal et faites
    cat ~/.ssh/id_ed25519.pub
    copiez le texte (ssh-ed25519 ... @etu.univ-amu.fr) et collez-le dans le formulaire.
  4. Vérifiez que ça marche avec
    ssh -T git@etulab.univ-amu.fr

Exercice 2

Connectez-vous sur etulab.univ-amu.fr et ajoutez votre clé SSH.

Cette partie est à faire une seule fois pour chaque ordinateur. Vous êtes maintenant prêts à utiliser Git et GitLab

Gestion de projet

Une vision très simple du cycle de vie d'un projet collaboratif est :

  1. Début du projet
  2. Faire des modifications (ajout, suppression ou modification)
  3. Quand on a une version stable, on la partage
  4. Chacun récupère la dernière version
  5. Retour à l'étape 2

Nous allons voir comment le faire avec Git et GitLab

Créer un projet

  1. Allez sur GitLab
  2. Cliquez sur New Project
  3. Renseignez les informations. Choisissez la visibilité et cochez Initialize repository with a README.

Vous pourrez ensuite modifier les paramètres (avatar, membres).

Un peu de vocabulaire :

Dépôt / projet
Dossier contenant tous les fichiers à gérer
Commit
Version du projet enregistrée
Copie de travail
Fichiers dans le répertoire, commités ou pas
Index
Liste de fichiers modifiés (créés, changés ou supprimés) prêts à être commités
Log
Historique des commits

Dans la suite nous allons utiliser Git avec une interface graphique (GUI)

Nous utiliserons aujourd'hui Git Gui, qui est multi-plateforme et installé par défaut avec Git

Il existe d'autres logiciels (GitKraken, Visual Studio Code) avec une meilleure UI, n’hésitez pas à les essayer

Clone

Cloner un projet : l'importer sur votre ordinateur depuis un serveur distant (GitLab). À faire une seule fois, au début

  1. Sur la page du projet, cliquez sur le bouton Clone et copiez l'adresse SSH.
  2. Lancez « Git Gui » et choisissez Clone existing repository
  3. Dans Source Location, collez l'adresse SSH du projet (étape 1)
  4. Dans Target Directory, choisissez un nouveau répertoire qui contiendra les fichiers du projet

Add

Ajouter des fichiers à l'index. Vous pouvez choisir de ne pas tout ajouter s'il y a des modifications en cours qui ne sont pas encore réussies

Unstaged Changes : fichiers modifiés qui ne sont pas dans l'index. Pour les ajouter, cliquez sur l'icône à gauche du nom de fichier

Retirer un fichier de l'index : cliquer sur l'icône à gauche du nom de fichier dans Staged Changes

Commit

Faire un commit : enregistrer une version stable du projet. Il faut un commentaire pour expliquer les modifications faites.

  • Trop de commits : difficiles à trouver dans l'historique
  • Pas assez : difficile de trouver une modification dans l'historique

Sur Git Gui, il suffit d'écrire le commentaire et cliquer sur Commit.

Push

Envoyer le commits sur le serveur distant.

Sur Git Gui, cliquez sur Push et laissez les paramètres par défaut.

Sur Gitlab, dans History, vous trouverez la liste de commits, avec le commentaire, l'auteur, la date et un identifiant.

Exercice 3

Créez un projet sur etulab.univ-amu.fr, faites des modifications en local et pushez-les sur le serveur distant.

Pull

Mettre à jour votre copie de travail par rapport au projet (dépôt distant).

Sur Git Gui :

  1. Cliquez sur Remote / Fetch from / origin
  2. Cliquez sur Merge / Local Merge.... Écrivez master dans Revision Expression

Pour aller plus loin, vous pouvez créer des branches : ce sont des versions parallèles du projet qui peuvent être intégrées quand elles marchent complètement.

Outils de GitLab

Historique d'un fichier

Pour voir l'historique de versions d'un seul fichier, sélectionnez-le et cliquez sur History.

Vous verrez la liste de commits qui l'ont modifié.

Vous pouvez aussi cliquer sur Blame pour voir les modifications sur la dernière version.


Compare

Pour voir les différences entre deux commits : allez sur Repository / Compare

Sélectionnez les commits à comparer :

  • La version actuelle est master
  • Pour les autres commits, il faut coller son identifiant (il se trouve dans la liste de commits).

Issues

Un issue (ticket) est une tâche à faire, comme

  • corriger un bug
  • ajouter une fonctionnalité
  • explorer une idée

Les membres du projet peuvent ajouter des commentaires (en Markdown) et des réactions.

Idéalement, chaque commit est fait pour résoudre un issue.

Boards

Similaire à Trello. Vous pouvez placer les issues sur des colonnes To Do, Doing... pour tracer leur état.

Milestones

Un milestone (étape clé, jalon) est un objectif, comme

  • le rendu final
  • les pré-rendus
  • la migration sur un serveur web

Il a un titre, une description et une date de réalisation. Vous pouvez associer plusieurs issues à un milestone.

Wiki

GitLab intègre un wiki dans chaque projet. Vous pouvez l'utiliser pour développer vos idées de façon collaborative sans passer par les issues, qui sont voués à disparaître quand ils sont résolus.

Conclusion

  • Git est un outil de gestion de versions plus puissant que ses alternatives (Dropbox, OneDrive, Google Docs)
  • Très utilisé dans le monde professionnel pour des projets informatiques
  • Il est conçu pour travailler avec le terminal, mais il existe des GUIs très ergonomiques
N'hésitez pas à explorer d'autres plate-formes comme GitHub et d'autres logiciels comme GitHub Desktop et GitKraken

Ressources

  • Aide de GitLab [URL]
  • Cours de Pierre-Antoine Champin [URL]
  • OpenClassroom : Git et GitHub [URL]

À faire

Déposez sur AMeTICE l'URL du projet que vous avez créé pendant cette séance.