Génie Logiciel - Gestion de versions

Post on 20-Jun-2022

10 views 0 download

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 <nico@delanoue.fr>Date: Thu Nov 12 16:23:59 2020 +0100

version avec fichier2.txtcommit fb9e90522ad57375103d646b4d0003 (tag: v1)Author: nico <nico@delanoue.fr>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.