Changes between Version 2 and Version 3 of InsiaAdminSysSvn


Ignore:
Timestamp:
Mar 31, 2007, 12:56:32 AM (14 years ago)
Author:
Vincent Caron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • InsiaAdminSysSvn

    v2 v3  
    1919A noter qu'il existe une famille nombreuse de système de contrôle de version dit distribuées, où il n'y a pas de distinction explicite client/server: GIT, Bazaar, Mercurial, Arch, Svk, Monotone, etc.
    2020
     21
    2122== 2. Notions fondamentales ==
    2223
     
    3334=== Utilisateurs ===
    3435
    35 Bien que la notion d'utilisateur soit facultative (on peut imaginer un
     36Bien que la notion d'utilisateur soit facultative (on peut proposer une lecture/écriture pour tout le monde), elle est fondamentale pour le traçage: il est important de savoir qui a effectué quoi, même si le mécanisme d'authentification des utilisateurs n'est pas sécurisé. L'implémentation dépend du modèle serveur utilisé.
     37
     38=== Check out, Working copy ===
     39
     40Chaque 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, la synchronisation ayant lieu qu'à des moments choisis.
     41
     42Chaque 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, projet-1.2, etc).
     43
     44=== Update ===
     45
     46Un 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'opération ''update''. Celle-ci peut prendre en compte le fait que vous avez modifié des fichiers en même temps que vos collègues.
     47
     48Traditionnellement, on effectue un ''update'' juste avant de commencer une séance de travail sur sa copie de travail, afin de minimaliser l'effort de synchronisation au ''checkin'' en fin de séance.
     49
     50=== Check in, Commit ===
     51
     52Lorsqu'on désire publier des modifications effectuées dans sa copie de travail, on effectue un ''checkin''. Subversion est un système dit '''optimiste''': il considère que le cas où deux personnes ont travaillé simultanément est l'exception, et ne verrouille donc aucune ressource.
     53
     54Si un utilisateur a effectué des modifications en même temps que vous mais les a ''commitées'' avant vous, vous allez faire face à un ''conflit'': il vous suffit de prendre une décision et de l'appliquer.
     55
     56Subversion gère de façon intelligente les conflits: si deux personnes ont touchées à des portions ''différentes'' d'un même fichier, il peut en général résoudre le problème tout seul. Un conflit est normalement le signe d'un problème de gestion de projet et doit déclencher une résolution sur le plan organisationnel et humain !
     57
     58=== Changeset ===
     59
     60L'ensemble des modifications que vous publiez peut contenir différentes informations:
     61 * changement de contenu des fichiers
     62 * renommage/déplacement de fichiers, de répertoire
     63 * modifications d'attributs (exécution, etc)
     64
     65Subversion rassemble l'ensemble de ces modifications dans une opération appelée ''changeset'' et vous garantit qu'un ''commit'' est '''atomique''': soit l'ensemble du ''changeset'' est effectivement enregistré sur le serveur, soit il est totalement ignoré (erreur de transmission, interruption volontaire, conflit, etc).
     66
     67Les ''changesets'' sont simplement numérotés à partir de 1 et leur série constitue l'historique globale du ''repository''.
     68
     69
     70== 3. Utilisation pratique ==
     71
     72=== Repository ===
     73
     74Il 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:
     75{{{
     76~/repository$ svnadmin create --fs-type fsfs projet1
     77}}}
     78
     79=== Via les fichiers ===
     80
     81On 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:
     82{{{
     83~/work$ svn checkout ~/repository/projet1
     84~/work$ cd projet1
     85~/work/projet1$
     86}}}