Blog créé grâce à Iblogyou. Créer un blog gratuitement en moins de 5 minutes.

réalisation des projets c2i

travail collaboratif

Réalisé par ichrak ismail Publié le Vendredi 1 Avril 2011 à 00:13:41

Exemple d’application de la gestion de versions

Un exemple d’application de gestion de versions est disponible l’encyclopédie Wikipédia. En effet, chaque article a un historique intégral depuis sa création, comprenant toutes les modifications jamais effectuées . Il est possible de visualiser les changements apportés entre deux versions arbitraires, de revenir à des versions antérieures, ...

De plus plusieurs personnes peuvent modifier le même article simultanément, avec un conflit uniquement si la même zone a été modifiée de façon incompatible.

Même si le mécanisme est peu visible pour le contributeur, il s’agit bel et bien d’un système de gestion de version.

CVS et la gestion de configuration

CVS (Concurrent Version System), [CVS 00] quand à lui, renouvelle le genre, en

incluant la notion de branche de développement, qui permet un véritable développement

en concurrence, chaque branche pouvant à son tour devenir la branche de référence,

tout en conservant son versionnage propre. Aux capacités multi-utilisateurs d

RCS, CVS ajoute aussi des possibilités de développement en réseau, qui en font un

outil de gestion de configuration, sur laquelle il est utile de faire quelques rappels.

2.1. La gestion de configuration et ses outils

Depuis les débuts de l’informatique, la gestion de configuration automatisée est le

doux rêve de tous les acteurs de l’industrie informatique, qu’ils soient constructeurs,

développeurs ou simple utilisateurs.

D’abords privilège des constructeurs qui fournissaient sur les premiers ordinateurs

des configurations rigides déléguables au mieux à un administrateur système, la gestion

de configuration est devenue le problème de tous avec l’apparition de machines

multi-utilisateurs, des systèmes ouverts, des systèmes micros, et des applications qui

vont avec.

Si on peut dire que l’évolution des systèmes est désormais aux mains des développeurs,

qui enrichissent les systèmes avec des applications, ceux-ci sont loin d’avoir

résolu les nombreux problèmes de gestion de configuration qu’ils posent au reste de

la communauté informatique et que l’on peut résumer rapidement en cette liste :

– les problèmes de structure : modélisation, interfaces, relation, consistence...

– les problèmes de construction : génération, snapshot, optimisation, régénération...

– les problème de comptabilité et d’audit : statistiques, rapports, historique, traçabilité...

– les problèmes de sécurité : contrôle d’accès, cloisonnement, suivi des bugs...

– les problèmes de version : version du logiciel, version de la configuration,

contexte, référentiel...

Tous ces problèmes sont passionants et certains font déjà l’objet de recherches

abondantes dans le monde de la science informatique [MOL 97] ; ceux de la dernière

catégorie ont la particularité de s’appliquer aussi à des documents numériques ne correspondant

pas forcément à des projets informatiques. C’est ce qui a motivé la présente

étude.

En effet, depuis qu’ils ont été mis en relief, ces problèmes de gestion de versions

ont suscité le développement d’outils spécifiques. Dans la partie technique de cet article,

ce sont les services rendus par ces outils que nous associerons au terme de « versionnage

».

2.2. CVS et le travail en groupe

On peut résumer les services de CVS en 4 grands besoins :

– travailler à plusieurs sur les mêmes fichiers au même moment ;

– gérer les versions des fichiers en cours de rédaction ;

– suivre les versions de documents externes ;

– gérer plusieurs branches de développement.

Pour cela CVS utilise une zone de stockage spécifique appelé référentiel, dans

lequel sont stockées toutes les données nécessaires au fonctionnement et suffisante

pour retrouver toutes les données qui lui ont été confiées.

Il fait aussi un grand usage des ressources du système, comme la notion d’utilisateurs

multiples, la structure arborescente des fichiers, et les possibilités client/serveur.

C’est pourquoi ces fonctions-là ne seront pas détaillées.

2.3. Utilisation du référentiel

Un référentiel CVS est un aggrégat d’objets ayant chacun leur version. L’évolution

des objets et de leurs versions se fait par :

– extraction du référentiel (checkout/update) ;

– modification en environnement de travail standard ;

– repose dans le référentiel pour mise à jour (commit).

On dit que CVS utilise un modèle par composition. Pour la gestion de la concurrence,

il s’inspire du modèle des transactions longues, qui a la caractéristique de

supporter autant de divergences que possible entre les différentes versions, la seule

contrainte de cohérence étant exigée au moment de la réunification des versions.

Autrement dit une session de travail avec CVS peut se résumer ainsi :

1. cvs update : Je synchronise ma copie de travail avec le référentiel. CVS me

signale les mises à jour.

2. à la fin de ma session, je valide mon travail. CVS me confirme si mes modifications

sont compatibles avec les autres travaux en cours.

3. si elles ne le sont pas, j’ai le choix de conserver mon autonomie ; je ne profiterai

plus des mises à jour concernant cet objet. Ce choix se répercutera sur les tentatives

de mises à jour futures (warning), à moins que je ne crée ma propre branche de développement.

4. si je choisis la dissidence, et que je veux en faire profiter les autres, je dois créer

une nouvelle branche.

Chaque transaction est enregistrée et peut faire l’objet d’une action (envoi d’un

message électronique à l’équipe de développement

– pour chacun de connaitre l’historique des actions et en particulier des modifications

apportées à chaque objet 8

– pour l’administrateur de savoir qui en est où.

Remarque : Il est courant d’ajuster les droits pour mettre tous les développeurs

à égalité. En revanche, il ne peut y avoir à tout moment qu’une branche principale,

chaque branche pouvant reprendre ce titre sur commande, d’où le besoin d’une certaine

concertation dans l’équipe.

2.4. Evolutions

Le succès de CVS s’explique par le fait qu’il effectue des tâches compliquées

faciles contrôler, du fait de l’accessibilité des textes et la simplicité de l’outil[PUR 00].

On constate à l’usage que :

– les conflits sont rares et généralement faciles à résoudre ;

– la gestion des versions est rassurante pour les auteurs qui peuvent retrouver à

tout moment une version satisfaisante à leur goût ;

– le fait d’associer aux validations des échanges de messages ou d’autres actions

aide à mesurer l’activité réelle de développement ;

D’une manière générale, l’utilisation d’un mécanisme automatique de contrôle responsabilise

les participants. L’un des spécialistes français de CVS [MOL 97] y voit

même une explication au faible nombre de conflits.

2.5. Limites

On a vu plus haut que CVS ne couvre pas tous les besoins de ses utilisateurs en

matière de gestion de configuration. On peut classer aussi dans cette catégorie les

problèmes organisationnels qui sont laissés à la liberté des gestionnaires de projets car

ils sont d’un autre niveau comme :

– quand une version peut-elle être validée ?

– qui a le droit de metre à jour la branche courante ?

– quand doit-on créer une nouvelle branche ?

Ce sont des décisions concertées que doivent prendre les développeurs au moment

où ils conviennent de versionner un projet. Contrairement à d’autres tâches de spécification

des projets informatiques, il est très facile d’intégrer dans un référentiel CVS

un projet en cours.

8. Cette fonction comprend la possibilité de récupérer n’importe quelle trouvaille perdue par

mégarde entre deux mises à jour, sans avoir recours aux sauvegardes.

celui de l’arborescence est encore pire. De même, il est délicat de mélanger deux

arborescences ayant des référentiels différents ;

– l’utilisation de fichiers spéciaux au sens du système. Cette limite de CVS le rend

impropre à la sauvegarde (mais qui n’empêche en rien la sauvegarde du repository, au

contraire).

3. Exemples de tâches

Voyons donc quelques tâches typiques des professionnels de l’information, tâches

qui peuvent justifier un système de versionnage. [BOR 00] Les exemples sont montrés

avec la ligne de commande de CVS. CVS a aussi des interfaces graphiques.

3.1. Retrouver un serveur web dans l’état où il était le 10 février

Le contenu des serveurs web évolue très vite, souvent sans tenir compte des problèmes

d’archivage. On supprime ou on modifie des pages qu’on ne garde pas. Cela

rend très difficile toute analyse de l’évolution d’un serveur, par exemple.

Souvent, on éprouve le besoin de garder une copie du serveur à une date donnée.

Mais, sans outil de gestion des versions, il est très difficile, après coup, de retrouver la

copie pertinente.

On voit ainsi des serveurs web dont le répertoire contient index.html, index.

html.old, index.html.very-old, links.html, links.html.old, etc. Sans que

l’on puisse dire facilement quel links.html va avec quel index.html.

Un bon système de versionnage permet de récupérer l’état d’un ensemble de pages

à une date donnée.

Commande CVS pour récupérer le répertoire htdocs, avec tous ses fichiers, dans

son état du 10 février :

cvs checkout -D '2001-02-10' htdocs

Un système de gestion de versions peut permettre de marquer un ensemble de

fichiers d’un label, qui facilitera l’extraction ultérieure.

Commande CVS pour marquer le répertoire htdocs :

cvs tag VERSION_DURAND_MODIFIEE_DUPONT

et pour extraire le répertoire tel qu’il était lors du marquage :

cvs checkout -r VERSION_DURAND_MODIFIEE_DUPONT htdocs

 

Afficher les 4 commentaires. Dernier par Jarboui Lobna le 06-04-2011 à 00h26 - Permalien - Partager
Réaliser par ichrak ismail Publié le Vendredi 1 Avril 2011 à 00:08:39

Pourquoi utiliser un logiciel de gestion de version

Un développeur est souvent amené à utiliser un logiciel de gestion de version pour ses projets. Pourtant c’est un outil très puissant qui peut servir à bien d’autres choses.

Qu’est-ce qu’un logiciel de gestion de version ?

Il s’agit d’un logiciel qui permet de suivre les différentes versions d’un ensemble de fichiers. Il permet de retrouver un ou des fichiers tels qu’ils étaient à une date donnée. C’est, en résumé, un logiciel qui garde un historique de l’évolution du fichier.

Ces logiciels permettent, quand il s’agit de fichiers texte , de voir les modifications (ajout, suppression, changement) entre différentes versions des fichiers, de savoir qui a modifié, etc. Pour un fichier binaire, le logiciel se contente de garder les différentes versions, sans être capable de dire les modifications .

Plus précisément, le développeur demande manuellement, et aussi souvent qu’il le désire, au logiciel de gestion de version de stocker l’état de ses fichiers à un instant donné, lui permettant de revenir à cette version à tout moment.

Pour les utilisateurs connaissant un logiciel tel que Microsoft Word (c), un logiciel de gestion de version est similaire au contrôle de révisions que le traitement de texte offre .

Pourquoi utiliser un tel logiciel, et quelles sont ses fonctionnalités majeures ?

La première utilisation est bien sûr de garder une trace des modifications. C’est un point très important :
 il est possible de faire de nombreuses modifications sur les fichiers, puis de tout annuler pour revenir à une version précédente sans avoir besoin de tout annuler manuellement, ou de garder une copie des fichiers originaux, ...
 le logiciel de gestion de version permet de suivre l’historique, qui a modifié quoi, quand. La plupart de ces logiciels permettent d’entrer un commentaire au moment de sauver l’état des fichiers. Associé à la liste, générée automatiquement, des fichiers modifiés, ceci permet de suivre la vie d’un logiciel.

Le logiciel de gestion de version permet également de faciliter le travail entre plusieurs personnes. Chaque développeur travaille sur une copie des sources sur son propre ordinateur, puis quand il juge que sa version est correcte, il la transmet au logiciel de gestion de version, qui centralise les modifications. Les autres développeurs peuvent alors récupérer depuis cette base centrale la dernière version des fichiers.

Il existe deux philosophies par rapport au travail collaboratif :
 soit les développeurs travaillent en mode « exclusif », c’est-à-dire qu’une seule personne à la fois peut modifier un fichier donné
 soit les développeurs modifient arbitrairement n’importe quel fichier, et le logiciel de gestion de version s’occupe de fusionner automatiquement les différentes modifications. Si la fusion automatique n’est pas possible (deux personnes ont modifié une même zone d’un fichier de façon différente et non compatible), il est nécessaire qu’un développeur résolve à la main les conflits de modification .

Les deux philosophies ont des points positifs et négatifs. La première évite les conflits de modification puisqu’une seule personne peut modifier un fichier ; en revanche elle peut parfois forcer un développeur à attendre qu’un autre ait fini de travailler sur un fichier pour pouvoir continuer. La deuxième approche est plus souple car elle permet de modifier sans restriction ni délai ; par contre elle demande une coordination entre les développeurs pour qu’ils ne modifient pas le même endroit en même temps .

Une fonctionnalité importante d’un logiciel de gestion de version est la possibilité de créer des « branches ». Cette fonctionnalité permet d’avoir plusieurs versions en parallèle des fichiers.

À quoi peut servir un tel logiciel pour un non développeur ?

Même si c’est à l’origine un outil destiné aux développeurs, un logiciel de gestion de version peut parfaitement être utilisé par un non développeur.

Le premier avantage est qu’une copie des fichiers gérés par le logiciel est disponible dans un emplacement centralisé. Ceci permet de facilement faire une sauvegarde des données — il suffit de copier le répertoire central. De plus même si un fichier est effacé par erreur il est possible d’en récupérer une version depuis le logiciel de gestion de version.

Le deuxième avantage est l’historique offert. Pour des documents souvent modifiés, pouvoir revenir à un point arbitraire dans le passé est un énorme avantage.

Bien sûr, utiliser un tel logiciel impose une certaine discipline, à savoir transmettre régulièrement au logiciel de gestion de versions les modifications effectuées sur les documents. Cependant les gains sont probablement suffisants pour s’imposer cette contrainte sans trop de difficultés.

Utiliser un logiciel de version nécessite également d’avoir un peu plus d’espace disque disponible, puisqu’un fichier existe en différentes versions, occupant de la place sur le disque. Mais avec les capacités actuelles de stockage, ce n’est pas vraiment une difficulté — enfin, vouloir gérer des versions de films en haute définition poserait certainement des soucis !

Afficher les 4 commentaires. Dernier par Messoud Samar le 05-04-2011 à 22h56 - Permalien - Partager
Ce le plan de projet :réaliser par ichrak ismail Publié le Jeudi 31 Mars 2011 à 01:33:09

Image

Afficher les 6 commentaires. Dernier par Ismail Ichrak le 05-04-2011 à 01h34 - Permalien - Partager
inconvénient et avantage du gestion de version par: larbi khaoula Publié le Mercredi 30 Mars 2011 à 19:41:15

Avantages et inconvénients

Centralisé

  • Peu adapté aux grands effectifs.
  • Haute disponibilité du serveur contenant le dépôt nécessaire.
  • Risques plus élevés pour l'intégrité du dépôt.
  • Infrastructure requise pour mettre en place un dépôt commun.
  • Moins d'organisation humaine requise vu qu'il n'y a qu'un seul dépôt.
  • Ne peut pas etre distribué.
  • Plus facile a prendre en main : les étapes pour un cycle de développement sont moindre.

Utilisez un système centralisé pour une petite équipe rigoureuse pouvant être connectée au serveur en permanence et ne pouvant pas se permettre de passer du temps quant à l'organisation pour fusionner les dépôts.

Distribué

  • Adapté aux grands effectifs.
  • Pas de contrainte de disponibilité du serveur.
  • Risques réduits pour l'intégrité du dépôt final.
  • Pas de contrainte d'infrastructure car il n'y a pas nécessité d'avoir un dépôt commun.
  • Peut être centralisé, mais demande plus d'organisation humaine pour fusionner les différents dépôts dans un dépôt commun.
  • Plus difficile à prendre en main de part les possibilités et les étapes nécessaires a un cycle de développement.

Utilisez un système distribué pour une équipe aussi bien petite que grande, possédant la rigueur nécessaire a une hiérarchisation des dépôts et/ou ayant des contraintes de travail ne permettant pas d'être connectée en permanence avec un éventuel serveur.

Spécificités

  • Possibilité de renommer un fichier ou dossier sans en perdre l'historique (contrairement à CVS).
  • Les méta-donnees sont versionnées.
  • Historique de ce qui a été fait, par qui et quand.
  • Système de branches.
  • Visualisation des differences entre deux révisions d'un même fichier ou dossier.
  • Système de scripts pour chaque étape possible de l'utilisation du SCM (pre-ommit, post-commit, pre-status, etc...)
Afficher les 2 commentaires. Dernier par Messoud Samar le 05-04-2011 à 01h42 - Permalien - Partager
But d'usage de gestion de version par:larbi khaoula Publié le Mercredi 30 Mars 2011 à 19:22:34

Un logiciel de gestion de versions est un logiciel de gestion de configuration permettant de stocker des informations pour une ou plusieurs ressources informatiques permettant de récupérer toutes les versions intermédiaires des ressources, ainsi que les différences entre les versions.
Un logiciel de gestion de versions agit sur une arborescence de fichiers afin de conserver toutes les versions des fichiers, ainsi que les différences entre les fichiers. Ce système permet par exemple de mutualiser un développement. Un groupe de développeurs autour d'un même développement se servira de l'outil pour stocker toute évolution du code source.

Utilité des systèmes de gestion de version :

*Accès concurrentiel par plusieurs développeurs

*Suivi de l’historique

*Visualisation des déférences

*Retour `a des anciennes versions

Afficher le commentaire. Dernier par groupe_c2i le 31-03-2011 à 11h35 - Permalien - Partager