Accueil🇫🇷Chercher

Apache Subversion

Subversion (en abrégé svn) est un logiciel de gestion de versions, distribué sous licence Apache[3]. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient volontairement sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le modèle de CVS est bon, seule son implémentation est perfectible.

Apache Subversion
Description de l'image Apache Subversion logo.svg.

Informations
Créateur CollabNet
Développé par Apache Software Foundation
Première version [1]
Dernière version 1.14.2 ()[2]
DĂ©pĂ´t svn.apache.org/repos/asf/subversion/trunk
Écrit en C, Python, C++ et Java
Système d'exploitation GNU/Linux, Microsoft Windows, macOS et BSD
Formats lus SVN dump format (v1) (d), SVN dump format (v2) (d), SVN dump format (v3) (d) et SVN dump format (generic) (d)
Formats Ă©crits SVN dump format (v1) (d), SVN dump format (v2) (d), SVN dump format (v3) (d) et SVN dump format (generic) (d)
Type Gestionnaire de code source centralisé (d)
Projet de la fondation Apache (d)
Licence Licence Apache version 2.0
Site web subversion.apache.org

Subversion fonctionne donc sur le mode client-serveur, avec :

  • un serveur informatique centralisĂ© et unique oĂą se situent :
    • les fichiers constituant la rĂ©fĂ©rence (le « dĂ©pĂ´t » ou « rĂ©fĂ©rentiel », ou « repository » en anglais),
    • un logiciel serveur Subversion tournant en « tâche de fond » ;
  • des postes clients sur lesquels se trouvent :
    • les fichiers recopiĂ©s depuis le serveur, Ă©ventuellement modifiĂ©s localement depuis,
    • un logiciel client, sous forme d'exĂ©cutable standalone (ex. : SmartSVN) ou de plug-in (ex. : TortoiseSVN, Eclipse Subversive) permettant la synchronisation, manuelle et/ou automatisĂ©e, entre chaque client et le serveur de rĂ©fĂ©rence.

Le projet a été lancé en par CollabNet, avec l'embauche par Jim Blandy de Karl Fogel, qui travaillait déjà sur un nouveau logiciel gestionnaire de version.

Le , Subversion est devenu officiellement un projet de la fondation Apache, prenant le nom d'Apache Subversion.

Les apports de Subversion

Subversion a été écrit afin de combler certains manques de CVS.

Voici les principaux apports :

  • les commits, ou publications des modifications sont atomiques. Un serveur Subversion utilise de façon sous-jacente une base de donnĂ©es capable de gĂ©rer les transactions atomiques (le plus souvent Berkeley DB) ;
  • Subversion permet le renommage et le dĂ©placement de fichiers ou de rĂ©pertoires sans en perdre l'historique ;
  • les mĂ©tadonnĂ©es sont versionnĂ©es : on peut attacher des propriĂ©tĂ©s, comme les permissions, Ă  un fichier, par exemple.

Du point de vue du simple utilisateur, les principaux changements lors du passage Ă  Subversion, sont :

  • les numĂ©ros de rĂ©vision sont dĂ©sormais globaux (pour l'ensemble du dĂ©pĂ´t) et non plus par fichier : chaque commit a un numĂ©ro de rĂ©vision unique, quels que soient les fichiers touchĂ©s. Il devient simple de se souvenir d'une version particulière d'un projet, en ne retenant qu'un seul numĂ©ro ;
  • svn rename (ou svn move) permet de renommer (ou dĂ©placer) un fichier ;
  • les rĂ©pertoires et mĂ©tadonnĂ©es sont versionnĂ©s.

Branches et tags

Une des particularités de Subversion est qu'il ne fait aucune distinction entre un label, une branche et un répertoire. C'est une simple convention de nommage pour ses utilisateurs. Il devient ainsi très facile de comparer un label et une branche ou autre croisement.

Quel que soit le système de gestion de versions, les numéros de révision à plusieurs chiffres sont difficiles à mémoriser. Pour cette raison, de nombreux systèmes laissent l'utilisateur définir des tags comme des synonymes plus faciles à retenir. Alors que dans la plupart des autres systèmes un tag est une référence, un « tag » Subversion n'est qu'une copie. Seules quelques références prédéfinies sont disponibles : HEAD, PREV, BASE, COMMITTED. Une date permet aussi d'identifier une révision.

Une autre différence est que les tags des autres systèmes sont des points dans le temps, alors que Subversion recommande de définir les tags comme des points dans l'espace du système de fichiers.

Cette absence de tag au sens habituel rend certaines opérations un peu moins pratiques dans Subversion. Par exemple, retrouver ce qui a changé d'un tag à l'autre dans un fichier est un petit peu plus compliqué que de lancer une simple commande : svn diff -r tag1:tag2 monfichier dans le répertoire de travail.

D'autres opérations deviennent impossibles : par exemple une commande telle que svn log -r tag1:tag2 monfichier ne fonctionne pas et il n'y a pas d'alternative qui fonctionne.

Pour pallier ces manques, l'ajout de « labels » ou « alias » a été proposé sur les listes de discussions de Subversion[4]. Ces labels seraient équivalents aux tags d'autres systèmes comme CVS, Git ou autre. En 2010, cette suggestion n'a pas dépassé le stade de la discussion.

Les principales commandes de Subversion

CommandeSignification
addDĂ©clare l'ajout d'une nouvelle ressource pour le prochain commit.
blamePermet de savoir quel contributeur a soumis les lignes d'un fichier.
checkout (co)Récupère en local une version ainsi que ses méta-données depuis le dépôt.
cleanupNettoie la copie locale pour la remettre dans un Ă©tat stable.
commit (ci)Enregistre les modifications locales dans le dépôt créant ainsi une nouvelle version.
copy (cp)Copie des ressources à un autre emplacement (localement ou dans le dépôt).
delete (rm)Déclare la suppression d'une ressource existante pour le prochain commit (ou supprime directement une ressource du dépôt).
diff (di)Calcule la différence entre deux versions (permet de créer un correctif à appliquer sur une copie locale).
exportRécupère une version sans métadonnées depuis le dépôt ou la copie locale.
importEnvoie une arborescence locale vers le dépôt.
infoDonne les informations sur l'origine de la copie locale.
list (ls)Donne la liste des entrées d'un répertoire du dépôt.
lockVerrouille un fichier.
logDonne les messages de commit d'une ressource.
mergeCalcule la différence entre deux versions et applique cette différence à la copie locale.
move (mv)Déclare le déplacement d'une ressource.
propdel (pd)Enlève la propriété du fichier.
propedit (pe)Édite la valeur d’une propriété.
propget (pg)Retourne la valeur d’une propriété.
proplist (pl)Donne une liste des propriétés.
propset (ps)Ajoute une propriété.
resolvedPermet de déclarer qu'un conflit de modifications est résolu.
revertRevient à une version donnée d'une ressource. Les modifications locales sont écrasées.
status (st)Indique les changements qui ont été effectués.
switch (sw)Bascule sur une version/branche différente du dépôt.
update (up)Met à jour la copie locale existante depuis la dernière version disponible sur le dépôt.
unlockRetire un verrou.

Applications clients et serveur

Logiciels clients

L'accès au serveur subversion peut se faire en utilisant son protocole natif (port TCP par défaut : 3690), ou sur une connexion HTTP (le serveur doit alors prendre en charge les extensions WebDAV). Ces deux modes d'accès peuvent être sécurisés au niveau de la couche de transport (tunnel SSH ou HTTPS), ce qui est particulièrement recommandé dans le cas de serveurs sur un réseau public comme Internet.

Outre l'outil en ligne de commande, plusieurs logiciels pourvus d'interface graphique existent, sous forme d'exécutable standalone, mais également de plugins notamment pour EDI.

Logiciels serveurs

Deux types de serveurs subversion sont disponibles actuellement[5] :

  • svnserve est un serveur lĂ©ger qui utilise un protocole TCP/IP spĂ©cifique. Il est destinĂ© aux petites installations ou lorsqu'un serveur complet Apache ne peut pas ĂŞtre utilisĂ©. Il utilise par dĂ©faut une authentification par un fichier contenant des noms d'utilisateur et leur mot de passe mais peut Ă©galement ĂŞtre utilisĂ© avec le protocole Simple Authentication and Security Layer (SASL). On peut Ă©galement utiliser une connexion sĂ©curisĂ©e SSH avec svnserve.
  • Serveur HTTP d'Apache[6]. Dans ce cas les dĂ©pĂ´ts sont rendus accessibles aux clients via l'installation d'un module WebDAV. L'utilisation du protocole SSL permet de sĂ©curiser la transmission via l'Internet. Dans le cas d'un grand nombre d'utilisateurs, le protocole SSH peut ĂŞtre plus contraignant et moins sĂ©curisĂ© puisqu'il crĂ©e des utilisateurs de plein droit sur le serveur hĂ´te. Un des avantages de la solution HTTP d'Apache malgrĂ© sa lourdeur d'installation ainsi que sa rĂ©activitĂ© plus lente, par rapport Ă  Svnserve, est la possibilitĂ© de tracer les connexions des clients.

Logiciels annexes

Sur serveurs Windows, le logiciel VisualSvn Server[7] permet un packaging de Apache + Subversion avec un paramétrage automatique et une console d'administration graphique du serveur pour gérer les droits à partir d'un serveur ActiveDirectory…

Côté serveur

Voir aussi

Liens externes

Notes et références

  1. « https://subversion.apache.org/docs/release-notes/release-history.html »
  2. (en) « Apache Subversion 1.14.2 released », (consulté le )
  3. « Subversion », sur directory.fsf.org, Free Software Directory, (consulté le )
  4. (en) « Subversion Users List Archives », sur svn.haxx.se (consulté le )
  5. « Gestion de versions avec Subversion »
  6. « Apache Subversion », sur subversion.apache.org (consulté le )
  7. Site de www.visualsvn.com
  8. Site USVN
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.