SVN – revision control – slides – pdf

SVN - contrôle de révision#

Coordination de projets

Problème : Comment coordonner et synchroniser le code

entre plusieurs développeurs sur un projet ?

– Travailler sur le même ordinateur, alterner les périodes de codage

Non…

– Envoyer les fichiers par e-mail ou les mettre en ligne. Beaucoup

de travail manuel.

– Mettre les fichiers sur un disque partagé. Les fichiers sont écrasés ou

supprimés. Beaucoup de coordination directe.

– En bref : sujet aux erreurs et inefficace.

Qu’est-ce qu’un système de contrôle de version ?

Un dépôt de fichiers avec un accès surveillé pour suivre qui et quoi

les modifications ont été apportées aux fichiers

Suivi des versions

Collaboration et partage de fichiers

Informations historiques

Récupération de versions passées

Gestion des branches

Pourquoi l’utiliser ?

Dans le développement logiciel, un système de contrôle de version est, à l’heure

actuelle, presque obligatoire

Avec plusieurs développeurs, impossible de suivre les versions sans

un tel système

Doit pouvoir revenir à une version antérieure si une suite de tests échoue

Doit pouvoir marquer les versions logicielles

Coordination de projets (solution)

Solution : Un outil de gestion du code source (scm).

– Dépôt : Le code stocké sur un serveur central.

– Copie de travail : Le développeur vérifie une copie du code du dépôt

sur son ordinateur.

– Historique des révisions : Chaque modification de chaque fichier est

enregistrée dans une base de données. Peut être annulée.

– Gestion des conflits : Que se passe-t-il quand deux développeurs modifient

le même fichier ? La même ligne ?

Cycle de travail de base

Vérifier une copie de travail

Mettre à jour une copie de travail

Apporter des modifications

Examiner vos modifications

Valider vos modifications

Quelques commandes

Commandes Subversion communiquant avec le serveur :

svn checkout …

svn commit

Commandes Subversion hors ligne :

svn add

svn delete

svn status     (comparaison de haut niveau)

svn diff     (comparaison de bas niveau)

svn rename

svn move

Plus d’informations :

svn help [cmd]

Créer un dépôt

Création d’un dépôt :

/home/shafiqAlibhai> svnadmin create assignment1

…crée un répertoire dépôt :

/home/shafiqAlibhai/assignment1

Qu’y a-t-il à l’intérieur du dépôt ?

/conf/…

/dav/…

/db/…

/format

/hooks/…

/locks/…

/README.txt

Commandes de base

svn checkout

$ svn checkout http://url/repos/projectA

A projectA/file1

A projectA/file2

A projectA/file3

Révision vérifiée 28.

$

svn status

$ svn status

M projectA/file1

?       projectA/file4

$

Commandes de base

svn add/delete/copy/move

$ svn add file4

A file4

$

svn commit

$ svn commit –m “fix another bugs”

Sending         file1

Adding         file4

Transmission des données du fichier.

Révision validée 29.

$

Commandes de base

svn log

$ svn log


r29 | shafiq | Tue, 26 Dec 2006 18:03:46 +0900 | 1 line

fix another bugs


r28 | shafiq | Mon, 25 Dec 2006 13:01:24 +0900 | 1 line

Fixed some bugs.


r27 | jAlibhai | Mon, 25 Dec 2006 12:58:24 +0900 | 1 line

Some works.

Commandes de base

svn update

$ svn update

U file1

A file4

Mis à jour à la révision 29

$ svn update –r28

U file1

D file4

Mis à jour à la révision 28

$

Trunk, Branches, Tags

Les répertoires d’un projet SVN sont structurés par convention en trois répertoires de niveau supérieur :

trunk/

Représente la « ligne principale » du développement avec une copie complète du projet.

branches/

Contient des sous-répertoires, chacun contenant une copie complète du projet

Chaque branche représente une amélioration significative du projet qui

peut être développée indépendamment.

tags/

Contient des sous-répertoires, chacun contenant une capture instantanée du projet.

Chaque instantané représente une « version publique » ou autre configuration archivée du projet.

Trunk vs. Branch

Le trunk représente la version stable du

système. Elle doit toujours fonctionner, bien sûr.

Les branches représentent des flux de développement temporaires pour implémenter des fonctionnalités importantes.

Cela permet de valider des modifications dans le dépôt sans casser

la version stable (trunk).

Les branches peuvent contenir des erreurs/avertissements, etc.

Questions / Commentaires