Académique Documents
Professionnel Documents
Culture Documents
Génie logiciel
C01D
LOG1000
Gestion des
versions Ingénierie logicielle
1. Définition
2. Principe de
fonctionnement
3. Outils
Gestion des versions
Avec du matériel produit par Nikolay Radoev, Mathieu Lavallée, Bram Adams et 1
Michel Gagnon
LOG1000
Génie logiciel Gestion des versions
C01D
Gestion des
versions
1. Définition
2. Principe de
fonctionnement
3. Outils
2
LOG1000
Génie logiciel Gestion des versions
C01D
Gestion des
versions
●
Gestion de versions (versioning) : comment
s'assurer que toute l'équipe travaille sur les
1. Définition bonnes versions des fichiers ?
2. Principe de
fonctionnement
●
Problème #1 : les projets logiciels sont compliqués et changent
avec le temps : certaines parties sont fixes, d'autres sont
3. Outils
souvent modifiées/ajoutées/supprimées. Il faut garder une
historique de ses changements pour pouvoir se retrouver. Quoi
garder ? Comment ?
●
Problème #2 : Il faut garder un contrôle sur le produit et les
modifications apportées pour ne pas permettre n'importe quelle
modification du projet et s'assurer que les exigences qu'on a
sont respectées.
●
Ex: le projet Chromium a près d’une
demande de changement par minute.
3
LOG1000
Génie logiciel Gestion des versions
C01D
Gestion des
versions
●
Une bonne gestion des versions facilite
l'intégration du code en identifiant
1. Définition clairement quel code va avec quelle
2. Principe de
fonctionnement
version.
3. Outils
●
Par exemple, on peut donc se retrouver avec
plusieurs versions du fichier "main.c" :
main.c 1.0
End of support 1.0
main.c 1.1
0
v1.
1
v 1.
e
eas
Bugfixes
e
eas
Rel
Bugfixes
Rel
main.c DEV
5
LOG1000
Génie logiciel Gestion des versions
C01D
Gestion des
versions
●
Quels artéfacts sont suivis par la gestion
des versions ?
1. Définition
2. Principe de
fonctionnement Code source Documents Ex.:
Ex.: (ex.:
3. Outils (ex.: fichiers SharePoint,
SVN, Content
Git.
fichiers .cpp, .h, binaires DOC, PDF Management
Systems
makefile, texte de conception, (CMS).
brut) exigences)
Ex.: bases
de données,
Données Outils Ex.:
entrepôts
statiques.
(contenu que le (configuration des gestionnaires
de paquets
logiciel doit outils utilisés, du
manipuler) workspace)
main.c 1.0
End of support 1.0
main.c 1.1
0
v 1.
1
v1.
e
eas
Bugfixes
e
eas
Rel
Bugfixes
Rel
main.c DEV
11
LOG1000
Génie logiciel Système de gestion des versions
C01D
Gestion des
versions
●
Deux approches principales :
●
Blocage de fichiers : Je bloque l'accès au fichier
1. Définition
main.cpp tant que je suis en train de le modifier.
2. Principe de – Personne peut le modifier tant que je détiens
fonctionnement
l'accès.
3. Outils ●
Fusion de fichiers : Tout le monde peut modifier le
fichier main.cpp et on règlera les incohérences
(conflits) par la suite.
– Chaque membre de l'équipe travaille sur sa copie
du fichier.
12
LOG1000
Génie logiciel Blocage de fichier
C01D
Gestion des ●
Tant que le développeur ne libère par le fichier, personne
versions
d'autre ne peut y apporter des modifications.
●
Avantages :
1. Définition
●
Utile quand le fichier modifié n'est pas en texte brut.
2. Principe de
fonctionnement – Ex.: Fichier .doc, .ptt, .pdf, images.
3. Outils – Ces fichiers sont enregistrés en binaire et il est très difficile
de fusionner des versions différentes.
●
Parfois utile pour du travail urgent ou très complexe.
●
On est certain d'avoir la seule et unique version du fichier.
●
Inconvénients :
●
Empêche le travail en parallèle.
●
Problématique si on oublie de libérer le fichier et qu'on est absent
●
Peut être utilisé de manière abusive par des collègues qui
n'aiment pas fusionner les versions différentes.
●
N'empêche pas les incompatibilités avec d'autres fichiers.
13
– Ex.: Si un collègue renomme une dépendance.
LOG1000
Génie logiciel Fusion de fichiers
C01D
Gestion des ●
Les développeurs sont responsables de résoudre les conflits
versions
de fusion avant de pouvoir sauvegarder leurs modifications
dans l'entrepôt.
1. Définition ●
Avantages (≈ inverse du blocage) :
2. Principe de
fonctionnement
●
Permet le travail en parallèle.
3. Outils ●
Il n'y a pas de risque d'oublier de libérer un fichier.
●
Inconvénients (≈ inverse du blocage) :
●
Avoir des versions conflictuelles de fichiers binaires
(.doc, .ptt, .pdf, etc) est une bonne source de migraines
●
La résolution de conflit peut prendre du temps, surtout si
deux personnes ont modifié le même fragment de code.
●
Une mauvaise résolution de conflit peut amener des erreurs
dans le code/projet.
14
LOG1000
Génie logiciel Principes de fonctionnement
C01D
Gestion des J’obtiens le code du dépôt
versions int main(int argc, char **argv) {
return 0; (repository) partagé en
} ligne.
REMOTE v1
1. Définition
int mesure() {
return 5; 15
} REMOTE v2
LOG1000
Génie logiciel Principes de fonctionnement
C01D
Gestion des int main(int argc, char **argv) { J’obtiens le code du dépôt
versions int x = mesure(); partagé en ligne.
std::cout << x;
return 0;
1. Définition }
Ça ne marche pas ... On a
2. Principe de int calcul() { fait des changements qui
fonctionnement
return 5; ont brisé quelque chose ...
3. Outils } REMOTE v3
16
LOG1000
Génie logiciel Principes de fonctionnement : fusion
C01D
Gestion des int main(int argc, char **argv) { On essaie de soumettre
versions int x = mesure(); votre code en ligne, mais
std::cout << x; ça ne fonctionne pas.
return 0; Quelqu’un d’autre a
1. Définition } soumis des changements
au même fichier !
2. Principe de <<<<<<< HEAD
fonctionnement
int mesure() {
3. Outils =======
Il y a un conflit (conflict) ...
int calcul() {
entre notre version
>>>>>>> 77976da
(HEAD) et la version qui
return 5; se trouve sur le remote,
} LOCAL
soit la version 77976da.
1. Définition
●
SVN (Subversion) :
2. Principe de
– Fonctionne par bloquage de fichiers.
fonctionnement ●
Git :
3. Outils
– Fonctionne par fusion de fichiers.
– Un des système les plus populaires.
●
Perforce :
– Fonctionne par bloquage de fichiers.
– Adapté pour des gros projets (jeux vidéo par
exemple).
●
Microsoft TFS (Team Foundation System) / VSTS
(Visual Studio Team System) :
– Inclut des outils de gestion de projet. 18
LOG1000
Génie logiciel Systèmes de gestion de versions
C01D
Gestion des
versions
●
SVN a été populaire pendant très longtemps, mais
est lentement remplacé par Git.
1. Définition
●
Entre 70% et 80% des projets à code ouvert sont
2. Principe de
gérés avec Git, en hausse continue.
fonctionnement ●
La même proportion pour SVN, en chute libre.
3. Outils
●
Le projet intégrateur de 1ère année (et tous les
autres après) et les TPs en LOG1000 se font donc
sur Git.
●
Il faut donc savoir comment s'en servir.
●
Il existe des interfaces graphiques pour Git, mais il est
préférable de commencer en bonne vieille ligne de
commande.
●
Git est déjà installé sur les postes de l'école et sur la
machine virtuelle fournie par l'école.
19
LOG1000
Génie logiciel Distribué vs Centralisé
C01D
Gestion des ●
SVN et Perforce sont des systèmes de gestion de versions
versions
centralisés.
●
Seul le serveur garde l'historique des versions. Les clients ne font
1. Définition que manipuler les fichiers.
2. Principe de
fonctionnement
●
Git est un système de gestion de versions distribué.
3. Outils
●
Les clients n'ont pas seulement des fichiers, mais dupliquent
complètement l'historique sur le serveur.