Utilisation de Git/Gitlab⚓
Git :
- Site officiel : https://git-scm.com/
- Page Wikipédia : https://fr.wikipedia.org/wiki/Git
Gitlab :
- Site officiel : https://gitlab.com/gitlab-org/gitlab
- Instance installée à IMT Atlantique pour usage général : https://gitlab.imt-atlantique.fr/
- Instance installée à IMT Atlantique dédiée aux enseignements : https://gitlab-df.imt-atlantique.fr/
Page Wikipedia de Git
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre et gratuit, créé en 2005 par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. Le principal contributeur actuel de Git, et ce depuis plus de 16 ans, est Junio C Hamano. Depuis les années 2010, il s’agit du logiciel de gestion de versions le plus populaire dans le développement logiciel et web, qui est utilisé par des dizaines de millions de personnes, sur tous les environnements (Windows, Mac, Linux)3. Git est aussi le système à la base du célèbre site web GitHub, le plus important hébergeur de code informatique.
Warning
L'instance dédiée aux enseignements https://gitlab-df.imt-atlantique.fr/ est purgée tous les ans. Tous les groupes et projet sur supprimé en fin d'année scolaire. Pour des projets pérennes, il faut utiliser l'instance générale.
Objectif⚓
L'objectif d'utiliser git et gitlab lors des enseignements VHDL est de vous familiariser avec ces outils incontournables dans le domaine du développement, quelque soit le langage.
Ici, nous allons prendre pour exemple le projet Carrefour, avec l'URL https://gitlab-df.imt-atlantique.fr/tp-vhdl/tp-carrefour-etudiant.git.
Warning
Veuillez adapter l'URL pour qu'elle corresponde au TP que vous êtes en train de suivre. Les commandes et le fonctionnement de git/gitlab seront les mêmes, quelque soit le projet.
Principes de git⚓
Git permet de versionner un projet de développement, de manière fine et décentralisée. On garde ainsi l'historique de toutes les modifications et surtout, on peut revenir à une version précise très facilement.
Lorsque l'on fait des modifications dans un projet, on peut ajouter ces modifications à l'index de git
grâce à la commande git add
. Lorsque toutes les modifications souhaitées ont été indexées, on peut les valider avec la commande git commit
, qui créé une nouvelle entrée dans l'historique du projet. Si besoin, on peut se balader entre les commit.
Si on souhaite tester le développement d'une fonctionnalité que l'on souhaite tester, sans impacter le développement principal, git permet la création de branches (git branch
), que l'on peut ensuite fusionner (git merge
) avec n'importe quelle autre branche, dont la principale (souvent appelé main
).
Gitlab est une plateforme web de gestion de projet git. Ce type de plateforme facilite le travail collaboratif en donnant un point d'entrée unique pour un projet. On peut récupérer un projet (git clone
), le modifier (git add/commit
), et pousser ses modification local sur gitlab (git push
), et récupérer les modifications d'autrui entre temps (git pull/fetch
).
Récupération d'un projet⚓
Ouvrez un terminal (Ctrl+Alt+T) et créez/déplacez vous dans votre répertoire de travail souhaité avec les commandes
1 |
|
L'option -p
permet de créer les répertoire intermédiaires automatiquement sans avoir à le faire à la main pour chaque. Ensuite
1 |
|
Bien évidement à adapter en fonction de vos besoin.
Tip
Choisissez une arborescence lisible. Un bon reflexe est de segmenter par année, par enseignement et par TP. Par exemple pour le TP loto de l'enseignement MEDCON en 2A : mkdir -p ~/2A/MEDCON/loto
Warning
Ne mettez jamais d'espaces d'accent ou de caractères spéciaux dans vos noms de répertoires ou de fichiers.
Ensuite, il faut cloner le dépôt git présent sur gitlab en local sur votre poste de travail avec la commande... git clone
:
1 |
|
Il vous faudra renseigner vos login et mot de passe. Rien ne s'affiche quand vous tapez votre mot de passe, c'est normal, c'est une mesure de sécurité.
Un répertoire tp-carrefour-etudiant
est normalement crée, et contient tous les fichiers du dépôt nécessaire au déroulement du TP. C'est une copie conforme, avec tout son historique, du dépôt distant.
Vous pouvez vérifier avec la commande ls -alsh tp-carrefour-etudiant
Note
Il est possible d'utiliser une paire de clés SSH pour éviter d'avoir à entrer son mot de passe à chaque fois. Il faut pour cela créer une paire de clés, renseigner la clé public sur gitlab, et ensuite cloner le dépôt avec le lien adapté (celui en git@gitlab...
et non celui en https://gitlab....
)
Vérifier l'état de votre dépôt local⚓
Il est parfois utile et intéressant de vérifier l'historique de votre dépôt avec la commandes git log
:
1 2 |
|
Configuration locale⚓
Il est nécessaire de renseigner votre nom et votre email. Toute validation par git utilise ces informations.
1 2 |
|
Envoi de vos modification sur le dépôt Gitlab.⚓
Pour envoyer des modifications sur un dépôt distant, il faut passer par plusieurs étapes.
Ajouter les modifications à l'index local⚓
Par exemple, vous avez modifier les fichier counter.vhd
et fsmMoore.vhd
(dans le répertoire src
) et vous souhaitez prendre en compte ces modifications. Il faut d'abord se déplacer dans le répertoire du dépôt local :
1 |
|
add
, commit
etc :
1 |
|
puis utiliser la commande git add
:
1 |
|
Warning
n'ajoutez à vos modifications que les codes sources VHDL et les éventuelles comptes rendus et schémas drawio et leur export .png
. Évitez d'ajouter le projet Vivado, ou alors uniquement les scripts qui permettent de le créer/gérer.
Valider toutes les modifications de l'index⚓
Pour valider toutes les modifications ajoutées à l'index, il faut utiliser la commande git commit
, en n'oubliant pas d'ajouter un message décrivant la nature des modifications que vous avez apporté avec l'option -m
Par exemple, toujours en étant dans le répertoire du projet Carrefour :
1 |
|
Envoyer les modification validées par le commit sur le dépôt distant⚓
Pour pousser les modifications sur le dépôt distant (origin
, sur la branche main
), on utilise la commande git push
:
1 |
|
La branche main
est la branche par défaut créé lors de la création d'un projet. Il est possible de créer autant de branches que l'on souhaite, mais ce n'est pas le sujet ici.
Vous devrez renseigner vos login et mot de passe
Récupérer des modifications distantes.⚓
Lorsque que l'on travail à plusieurs sur un projet, on est amené à devoir récupérer (tirer) en local des modifications poussées entre temps sur le dépôt distant. Il est conseillé de d'abord faire add
et commit
avant. On utilise la commande :
1 |
|
Vous devrez renseigner vos login et mot de passe
Récupérer de modifications distants depuis un autre dépôt distant⚓
Ici on va prendre le cas du dépôt de référence (sur gitlab.imt-atlantique.fr) qui permet de déployer les dépôts pour les étudiants.
Ajout du dépôt distant (remote) de référence :
1 |
|
Affichage des dépôts distants avec leurs URLs :
1 |
|
Récupération des modification distantes du dépôt de référence :
1 |
|
Fusion des modifications de la branche main du dépôt de référence avec le dépôt local
1 |
|