subversion
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
subversion [2009/03/14 21:38] – root | subversion [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== 1. Introduction ====== | ||
- | |||
- | [[http:// | ||
- | |||
- | Un système de contrôle de version vise plusieurs objectifs : | ||
- | * permettre la **collaboration** entre plusieurs utilisateurs sur un projet (fichiers) commun(s) | ||
- | * permettre la maintenance smultanée de différentes versions d'un même projet | ||
- | * tracer et enregistrer l' | ||
- | * consulter les informations historiques, | ||
- | |||
- | Il existe de nombreux systèmes de contrôles de version comparables, | ||
- | |||
- | A noter qu'il existe une famille nombreuse de système de contrôle de version dit distribuées, | ||
- | |||
- | ====== 2. Notions fondamentales ====== | ||
- | |||
- | ===== Repository ===== | ||
- | |||
- | Subversion utilisant un modèle centralisé, | ||
- | |||
- | Un repository contient en particulier les données du projet et toutes ses informations historiques. Avec Subversion, la taille du repository est donc en constante augmentation. Cette augmentation est liée à la quantité de modifications apportées (et leur nature). | ||
- | |||
- | ===== Serveur ===== | ||
- | |||
- | Il existe plusieurs types de modèle serveur pour publier un // | ||
- | |||
- | ===== Utilisateurs ===== | ||
- | |||
- | Bien que la notion d' | ||
- | |||
- | ===== Check out, Working copy ===== | ||
- | |||
- | Chaque client peut travailler sur le projet en obtenant une //copie de travail// grâce à une opération dite de //check out//. On peut donc travailler avec Subversion de manière déconnectée, | ||
- | |||
- | Chaque client peut utiliser autant de copie de travail qu'il le souhaite, en particulier il est naturel d'en avoir une par version maintenue d'un même projet (projet-1.1, | ||
- | |||
- | ===== Update ===== | ||
- | |||
- | Un client souhaite régulièrement récupérer les dernières modifications des autres utilisateurs en mettant à jour sa copie de travail, c'est l' | ||
- | |||
- | Traditionnellement, | ||
- | |||
- | ===== Check in, Commit ===== | ||
- | |||
- | Lorsqu' | ||
- | |||
- | Si un utilisateur a effectué des modifications en même temps que vous mais les a // | ||
- | |||
- | Subversion gère de façon intelligente les conflits: si deux personnes ont touchées à des portions // | ||
- | |||
- | ===== Changeset ===== | ||
- | |||
- | L' | ||
- | * changement de contenu des fichiers | ||
- | * renommage/ | ||
- | * modifications d' | ||
- | |||
- | Subversion rassemble l' | ||
- | |||
- | Les // | ||
- | |||
- | ====== 3. Mise en place ====== | ||
- | |||
- | ===== Repository ===== | ||
- | |||
- | Il est très simple de créer un repository, il prendra la forme d'un répertoire contenant un ensemble de fichiers variés. Il existe deux formats de repository, donc **bdb** qui devient obsolète (et ne fonctionne pas sur NFS). Exemple : | ||
- | |||
- | / | ||
- | |||
- | ===== Via les fichiers ===== | ||
- | |||
- | On peut se passer d'un serveur spécifique et utiliser directement les fichiers, y compris via NFS pourvu que le serveur gère correctement le //locking// (courant avec NFSv3). Dans ce cas un client peut obtenir une copie de travail très simplement : | ||
- | |||
- | $ svn checkout file:/// | ||
- | $~/work$ cd projet1 | ||
- | $~/ | ||
- | |||
- | Les droits d' | ||
- | |||
- | / | ||
- | |||
- | ===== Via svnserve ===== | ||
- | |||
- | Il s'agit du protocol réseau " | ||
- | * en lançant explicitement le démon **svnserve** | ||
- | * en gérant le démon **svnserve** via le superdémon //inetd// (classique) | ||
- | |||
- | Dans ce modèle, l' | ||
- | * **anon-access = none** : aucun accès public, authentification requise en lecture **et** écriture | ||
- | * **anon-access = read** : on a un accès en lecture publique, les écritures doivent être authentifiées | ||
- | * **anon-access = write** : on a un accès lecture/ | ||
- | |||
- | L' | ||
- | |||
- | Les autorisations sont plus simples car le serveur tourne sous une identité Unix prédéfinie, | ||
- | |||
- | Le client peut alors obtenir en copie de travail avec: | ||
- | |||
- | ~/work$ svn checkout svn:// | ||
- | |||
- | |||
- | Le port standard de // | ||
- | |||
- | ===== Via SSH ===== | ||
- | |||
- | Il s'agit de l' | ||
- | |||
- | Si le serveur à un démon SSH opérationnel, | ||
- | |||
- | ~/work$ svn checkout svn+ssh:// | ||
- | |||
- | On remarque qu'il s'agit tout simplement du tunneling du protocole // | ||
- | |||
- | |||
- | | ||
- | |||
- | ===== Update ===== | ||
- | |||
- | Une fois une copie de travail obtenue, Subversion mémorise la méthode d' | ||
- | |||
- | ~/ | ||
- | A dev/ | ||
- | U dev/ | ||
- | U dev/ | ||
- | Updated to revision 21442. | ||
- | |||
- | Très souvent, on désire simplement estimer quelles mises à jour seraient effectuées (pour étudier l' | ||
- | |||
- | ~/ | ||
- | |||
- | Par défaut les fichiers et répertoires que l'on créée ne sont pas pris en charge par Subversion. Il faut explicitement les ajouter au // | ||
- | |||
- | ~/ | ||
- | ~/ | ||
- | |||
- | ===== Commit ===== | ||
- | |||
- | Pour publier ses modifications, | ||
- | |||
- | ~/ | ||
- | |||
- | On peut estimer à tout moment quelles sont les modifications que l'on a effectuées par rapport à la dernière mise à jour de notre copie de travail : | ||
- | |||
- | ~/ | ||
- | ~/ | ||
- | |||
- | ===== Conflits (update) ===== | ||
- | |||
- | Les conflits arrivent. Ne jamais oublier qu'ils sont en général la conséquence d'un problème de gestion de projet qui peut parfois se régler en allant voir 2 minutes son collègue. | ||
- | |||
- | Lors d'une mise à jour, il peut y avoir conflit entre un fichier mis à jour par vos soins et simultanément par un autre utilisateur. Dans ce cas vous verrez apparaître le fichier avec un statut **C** : | ||
- | |||
- | ~/ | ||
- | C dev/ | ||
- | |||
- | Et dans ce cas Subversion va créer des fichier reflétant les différentes versions et vous laisse prendre la décision: NEWS.mine, NEW.r< | ||
- | |||
- | Quand un conflit est résolut, assurez-vous que ces fichiers temporaires de résolution de conflits sont supprimés ou demandez à Subersion : | ||
- | |||
- | ~/ | ||
- | |||
- | **Il faut toujours résoudre les conflits** avant de pouvoir continuer à travailler. | ||
- | |||
- | ===== Conflits (commit) ===== | ||
- | |||
- | Il s'agit du même problème que précédemment: | ||
- | |||
- | ===== Utilitaires ===== | ||
- | |||
- | Pour obtenir un historique des modification en un point de l' | ||
- | |||
- | ~/ | ||
- | ~/ | ||
- | |||
- | |||
- | Pour abandonner vos modifications et revenir à la version d'un fichier lors de votre dernier //update// : | ||
- | |||
- | | ||
- | |||
- | |||
- | N' | ||
- | |||
- | ~/ | ||
- | ~/ | ||
subversion.1237066684.txt.gz · Dernière modification : 2009/03/14 21:38 de root