Génie Logiciel - Gestion de versions
Transcript of Génie Logiciel - Gestion de versions
Génie LogicielGestion de versions
Nicolas Delanoue
Université d’Angers - Polytech Angers
1/30
1 Généralités
2 Travail en localPremière approcheDépôt et répertoire de travailEtats du système de gestions de versionsRevenir à une version précédenteCréation de branches
3 Travail collaboratif
2/30
3/30
Généralités Travail en local Travail collaboratif
DéfinitionLes logiciels évoluant, chaque étape d’avancement est appeléeversion (ou revision).
DéfinitionUne modification constitue une évolution entre deux versions.
Illustration
4/30
Généralités Travail en local Travail collaboratif
DéfinitionLa gestion de versions consiste à gérer l’ensemble des versions d’unou plusieurs fichiers (généralement en texte).
RemarquesIl existe de nombreux logiciels capable d’aider le développeurdans cette tâche (e.g. git).En anglais, on parle de version control ou de source codemanagement.
5/30
Généralités Travail en local Travail collaboratif
Possibilités offertesSauvegarde (avec ou sans serveur distant)Conservation de l’historique des fichiers
l’auteur des modifications,la date,une note explicative de cette modification.
Voir les changements,Expérimenter,Revenir aux versions précédentes,Collaborer.
6/30
Généralités Travail en local Travail collaboratif
Avantages de la création de branchesExpérimenter en sécurité, i.e. effectuer des grossesmodifications sans faire prendre de risques à la brancheprincipale.Collaborer, i.e. chacun sur sa branche. Il faudra tout de mêmefusionner. Exemples d’utilisation :
des correctifs complexes sans gêner les développements,restructuration de logiciel,compilation en local sans avoir à attendre . . .
7/30
Généralités Travail en local Travail collaboratif
ConclusionIl est possible et risquer de développer des logiciels sansutiliser de contrôle de version.La question n’est donc pas de savoir s’il faut utiliser lecontrôle de version, mais lequel.
8/30
Généralités Travail en local Travail collaboratif
1 Généralités
2 Travail en localPremière approcheDépôt et répertoire de travailEtats du système de gestions de versionsRevenir à une version précédenteCréation de branches
3 Travail collaboratif
9/30
Généralités Travail en local Travail collaboratif
Première approche
Exemple
RemarqueDeux mécanismes d’écriture :
En bleu : le système de gestion de versions,En noir : le système classique d’enregistrement de données.
10/30
Généralités Travail en local Travail collaboratif
Première approche
Exemple
Exemple de scénario d’utilisation
11/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Définition - Répertoire de travailOn appelle répertoire de travail (en anglais working copy) lesfichiers effectivement présents dans le répertoire géré par GIT.
Définition - Un dépôtUn dépôt (repository ou repo) est un dossier contenant l’ensembledes données associées au projet (les versions et les modificationsd’un projet).
Création d’un dépôt localnico@pc~/projet$ git initDépôt Git vide initialisé dans /home/nico/projet/.git/nico@pc~/projet$ ls -ladrwxrwxr-x 7 nico nico 4096 nov. 12 15:32 .git
12/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
RemarqueSauf cas rare, il n’est pas nécessaire d’intervenir manuellementdans le répertoire .git.
AvantagesUn dépôt sont de simples fichiers dans un dossier,Copier un dépôt .git permet de saugarder l’historique,Tous les logiciels sont compatibles avec git.
13/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Définition - commitSauvegarder au sens de git, c’est effectuer un commit.
Illustration
14/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
RemarqueEn interne, les commit sont liés les uns aux autres.D’une certaine manière, on s’affranchit du temps.
Illustration
14/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
RemarqueEn interne, les commit sont liés les uns aux autres.D’une certaine manière, on s’affranchit du temps.
Illustration
15/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Exemple simple
Figure – Résultat attendu.
16/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Exemple plus complexe : présence d’un fichier qu’il n’est pasnécessaire d’historiser.
Figure – Résultat attendu.
17/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Comment indiquer à git quels fichiers doivent être historisés lors duprochain commit ?
Choix des concepteurs de git :Le développeur doit explicitement préciser les fichiers qu’il souhaitehistoriser.
Commandes$ git add f1.txt$ git add f2.txt
17/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Comment indiquer à git quels fichiers doivent être historisés lors duprochain commit ?
Choix des concepteurs de git :Le développeur doit explicitement préciser les fichiers qu’il souhaitehistoriser.
Commandes$ git add f1.txt$ git add f2.txt
18/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
DéfinitionLes fichiers choisis par la commande git add sont dans l’étatstaged. On dit aussi qu’il font partie de l’index.
Figure – La solution.
19/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Commandes$ echo "titi" > f1.txt$ echo "1234" > f2.txt$ echo "ijklmnpop" > f3.tmp$ git add f1.txt$ git add f2.txt$ git commit -m "v2"
20/30
Généralités Travail en local Travail collaboratif
Dépôt et répertoire de travail
Dans quel état se trouvent les fichiers f1.txt, f2.txt et f3.tmp aprèsle commit v2 ?
Figure – Ici, les fichiers f1.txt et f2.txt sont indexés.
21/30
Généralités Travail en local Travail collaboratif
Etats du système de gestions de versions
Définition - EtatLa commande git status permet de connaitre l’état d’un fichierdu répertoire de travail vis à vis du dernier commit.
22/30
Généralités Travail en local Travail collaboratif
Etats du système de gestions de versions
Différences plus précisémentLa commande git diff permet de voir les modifications entre ledernier commit et le contenu du répertoire de travail.
Historique gitLa commande git log permet de voir l’ensemble des commit.
Exemplenico@pc:~/projet$ git logcommit e190938a57cf041549311dddabaa75 (tag: v2)Author: nico <[email protected]>Date: Thu Nov 12 16:23:59 2020 +0100
version avec fichier2.txtcommit fb9e90522ad57375103d646b4d0003 (tag: v1)Author: nico <[email protected]>Date: Thu Nov 12 16:07:07 2020 +0100
version 1
23/30
Généralités Travail en local Travail collaboratif
Revenir à une version précédente
git checkoutLa commande git checkout restaure le dossier de travail enaccord avec le commit passé en argument.
Exemple : git checkout v2
Figure – Avant git checkout v2
24/30
Généralités Travail en local Travail collaboratif
Revenir à une version précédente
git checkoutLa commande git checkout restaure le dossier de travail enaccord avec le commit passé en argument.
Exemple : git checkout v2
Figure – Après git checkout v2
25/30
Généralités Travail en local Travail collaboratif
Création de branches
Collaborer avec soi même ou bien avec d’autres
26/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
26/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
26/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
27/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
27/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
27/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
27/30
Généralités Travail en local Travail collaboratif
Création de branches
Illustration
28/30
Généralités Travail en local Travail collaboratif
29/30
Généralités Travail en local Travail collaboratif
Figure – Les collaborateurs travaillent en étant connectés au système.
30/30
Généralités Travail en local Travail collaboratif
Figure – Les collaborateurs travaillent avec une copie locale.
AvantagesLes problèmes réseaux sont presque indépendants de l’avancédes développeurs.Ils ont aussi chacun l’historique du projet.