Génie Logiciel - Gestion de versions

37
Génie Logiciel Gestion de versions Nicolas Delanoue Université d’Angers - Polytech Angers 1/30

Transcript of Génie Logiciel - Gestion de versions

Page 1: Génie Logiciel - Gestion de versions

Génie LogicielGestion de versions

Nicolas Delanoue

Université d’Angers - Polytech Angers

1/30

Page 2: Génie Logiciel - Gestion de versions

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

Page 3: Génie Logiciel - Gestion de versions

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

Page 4: Génie Logiciel - Gestion de versions

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.

Page 5: Génie Logiciel - Gestion de versions

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.

Page 6: Génie Logiciel - Gestion de versions

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 . . .

Page 7: Génie Logiciel - Gestion de versions

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.

Page 8: Génie Logiciel - Gestion de versions

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

Page 9: Génie Logiciel - Gestion de versions

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.

Page 10: Génie Logiciel - Gestion de versions

10/30

Généralités Travail en local Travail collaboratif

Première approche

Exemple

Exemple de scénario d’utilisation

Page 11: Génie Logiciel - Gestion de versions

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

Page 12: Génie Logiciel - Gestion de versions

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.

Page 13: Génie Logiciel - Gestion de versions

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

Page 14: Génie Logiciel - Gestion de versions

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

Page 15: Génie Logiciel - Gestion de versions

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

Page 16: Génie Logiciel - Gestion de versions

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.

Page 17: Génie Logiciel - Gestion de versions

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.

Page 18: Génie Logiciel - Gestion de versions

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

Page 19: Génie Logiciel - Gestion de versions

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

Page 20: Génie Logiciel - Gestion de versions

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.

Page 21: Génie Logiciel - Gestion de versions

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"

Page 22: Génie Logiciel - Gestion de versions

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.

Page 23: Génie Logiciel - Gestion de versions

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.

Page 24: Génie Logiciel - Gestion de versions

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

Page 25: Génie Logiciel - Gestion de versions

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

Page 26: Génie Logiciel - Gestion de versions

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

Page 27: Génie Logiciel - Gestion de versions

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

Page 28: Génie Logiciel - Gestion de versions

26/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 29: Génie Logiciel - Gestion de versions

26/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 30: Génie Logiciel - Gestion de versions

26/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 31: Génie Logiciel - Gestion de versions

27/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 32: Génie Logiciel - Gestion de versions

27/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 33: Génie Logiciel - Gestion de versions

27/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 34: Génie Logiciel - Gestion de versions

27/30

Généralités Travail en local Travail collaboratif

Création de branches

Illustration

Page 35: Génie Logiciel - Gestion de versions

28/30

Généralités Travail en local Travail collaboratif

Page 36: Génie Logiciel - Gestion de versions

29/30

Généralités Travail en local Travail collaboratif

Figure – Les collaborateurs travaillent en étant connectés au système.

Page 37: Génie Logiciel - Gestion de versions

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.