Vous êtes sur la page 1sur 9

Gestion manuelle des changements 2

file_old.c
IFT2255 - Génie logiciel
Systèmes de contrôle de révisions
file.c
file_oct24.c

Bruno Dufour
file_v1.c, file_v2.c, ...
dufour@iro.umontreal.ca

Bruno Dufour - Université de Montréal

Systèmes de contrôle de révision 3

• Objectif: gérer les changements apportés à des


fichiers
• Avantages
• Permettre d’effectuer des changements en toute
confiance, et le retour à une version antérieure si
Concepts
nécessaire
• Permettre de déterminer qui a fait quels
changements, et à quel moment
• Permettre la collaboration à l’aide d’un hiérarchie
de fichiers cohérente

Bruno Dufour - Université de Montréal


Système de contrôle de révisions 5 Système de contrôle de révisions 6

• Un système de contrôle de révisions ou versions


(SCR) vise à faire le suivi des changements effectués
sur un ensemble de fichiers et dossiers
• Comme serveur de fichiers conventionnel (ex: NFS),
un SCR permet d’accéder à la version courante d’un
projet
• Un SCR permet aussi d’accéder aux versions
antérieures d’un projet
• Chaque état d’un projet est appelé une révision

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Révisions 7 Dépôt 8

Rév 1 Rév 2 Rév 3 Rév 4

• Un projet sous contrôle de révisions est associé à un


dépôt (repository)
• Le dépôt contient l’historique du projet
• contenu modifié
• auteur des modifications
• temps de modification
• etc.
• Typiquement, le dépot est enregistré sous forme de
base de données

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Copie de travail 9 Suivi des changements 10

• Le SCR fait le suivi des changements apportés à une


• Un client qui désire apporter des modifications doit copie de travail en coulisses
obtenir une copie de travail (working copy) • ajout de fichier / dossier
• L’opération de check out ou de clonage d’un dépôt • suppression de fichier / dossier
permet d’obtenir une copie de travail
• modification du contenu
• Le SCR fait le suivi des changements apportés à une
copie de travail en coulisse • déplacement de fichiers
• Il est possible à tout moment d’annuler les • etc.
modifications apportées la copie de travail d’un ou • Le processus est transparent jusqu’à ce que les
plusieurs fichiers changements soient prêts à former la prochaine
révision

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Soumission 11 Création d’une révision 12

• Suite à une soumission, une nouvelle révision est


créée pour l’ensemble de changements
• Au lieu d’enregistrer les changements individuels, un • Le SCR enregistre tous les détails (fichiers affectés,
SCR attend que l’utilisateur enregistre un ou plusieurs
auteur, moment du changement, etc.)
changements dans une seule transaction atomique
• La nouvelle révision obtient un identifiant unique qui
• Motivation: un changement logique est souvent
permet d’accéder à la cette révision dans le futur
composé de plusieurs changements individuels
• ex: un numéro séquentiel (1,2,3,4,...), un code
• Lorsqu’un ensemble de changements est prêt, de hashage (5d368c0635de051...)
l’utilisateur peut les soumettre (commit, check in)
• La majorité des SCR supportent aussi
• L’utilisateur pourra aussi associer un commentaire
l’étiquetage de révisions
descriptif à sa soumission
• La nouvelle révision devient la révision courante
(HEAD revision)

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Branches 13 Fusion de fichiers 14

• Il est souvent désirable d’enregistrer des révisions • Lors d’une fusion, le SCR connaît les changements
expérimentales qui pourraient briser la révision apportés à chacun des fichiers depuis leur dernier
principale (main, trunk) ancêtre commun
• Les SCR permettent de créer des copies d’une • Le SRC peut effectuer la fusion automatiquement
révision, ou branches, qui peuvent être modifiées lorsque les changements ne sont pas conflictuels
en parallèle • En cas de conflit, un humain devra effectuer
• Des changements peuvent être soumis dans une l’opération manuellement
branche pendant que d’autres changements sont • Le SCR peut offrir une vue des différences pour
soumis dans la révision principale. faciliter la fusion manuelle
• Une fois qu’une branche est jugée stable, elle peut • Typiquement, un usager est averti par le SCR en
être fusionnée (merged) à la révision principale. cas de conflit

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Exemple de branches 15 Mise à jour 16

• Lorsqu’un développeur travaille dans une branche,


des changements importants peuvent être apportés
dans la branche principale
• Les SCR peuvent importer les changements d’une
branche dans une autre avec l’opération de mise à
jour (update, pull)
• Importe les derniers changements d’une branche
• Importer les derniers changements fréquemment
permet généralement d’éviter les conflits lors de la
fusion éventuelle de la branche
• Facilite la fusion de fichiers

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Changements concurrents 18

A Dépôt

Lecture Lecture

Collaboration
Alice A A Bob

Bruno Dufour - Université de Montréal

Changements concurrents 19 Changements concurrents 20

A Dépôt A Dépôt

Alice A A Bob Alice A’ A Bob

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Changements concurrents 21 Changements concurrents 22

A Dépôt A’ Dépôt

Écriture

Alice A’ A’’ Bob Alice A’ A’’ Bob

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Changements concurrents 23 Changements concurrents 24

A’ Dépôt A’ Dépôt

Alice A’ A’’ Bob Alice A’ A’’ Bob

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Changements concurrents 25 Changements concurrents 26

Changements écrasés par


Bob

A’’ Dépôt A’’ Dépôt

Écriture

Alice A’ A’’ Bob Alice A’ A’’ Bob

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Solutions 27 Verrouiller - modifier - déverrouiller 28

• Un fichier ne peut être modifié que par un client à la


fois
• Les autres utilisateurs doivent attendre que le fichier
soit déverrouillé avant de le verrouiller et effectuer
des modifications à leur tour
• Verrouiller - modifier - déverrouiller • Problèmes
• Copier - modifier - fusionner • Modèle très restrictif, ne permet pas des
changements concurrents mais non-conflictuels à
un fichier
• Possibilité d’oublier de déverrouiller un fichier
• Possibilité pour deux clients des verrouiller deux
fichiers interdépendants

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Copier - modifier - fusionner 29

• Les clients obtiennent des copies locales d’un même


fichier Architectures
• Des modifications peuvent être effectuées en
parallèle
• La version finale est une fusion des fichiers modifiés

Bruno Dufour - Université de Montréal

Architectures 31 SCR centralisé 32

Dépot (repository)

Serveur possède l’unique


dépot
• Deux architectures principales
• SCR Centralisé
• ex: CVS, Subversion (SVN)
• SCR Décentralisé
• ex: Git, Mercurial

Client Client Client


Clients communiquent avec le serveur pour
toutes les opérations.
Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal
Subversion 33 SCR décentralisé 34

Chaque client ou
serveur possède une Serveur
• SCR centralisé le plus populaire en ce moment copie complète du
• Avantages dépot.
• Modèle facile à comprendre
• Stable et supporté par une variété d’outils
• Facile à apprendre
• Inconvénients
• Dépend d’un accès à un serveur Client Client
• Opérations peuvent être lentes
Chaque client peut
• Branches et fusion difficiles à utiliser jouer le rôle de
serveur si nécessaire.
Client
Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Git 35

• Un des SCR décentralisés les plus populaires


• Créé et utilisé par les développeurs de Linux
• Avantages
• Serveur optionnel
• Rapide (opérations locales)
• Branches efficaces, et donc utilisées fréquemment
• Inconvénients
• Le modèle distribué peut être difficile à comprendre
• Apprentissage plus difficile
• ex: utilisation des codes de hashage les rend
plus difficiles à référencer

Bruno Dufour - Université de Montréal

Vous aimerez peut-être aussi