Apache Subversion

Apache Subversion
Page d'aide sur l'homonymie Pour les articles homonymes, voir Subversion (homonymie) et svn.
Subversion
Subversion logo hor-468x64.png
Développeur CollabNet, Inc.
Dernière version 1.7.1 (23 octobre 2011) [+/-]
Environnements GNU/Linux, Mac OS X, Windows
Type Gestion de version
Licences Apache/BSD
Site web subversion.apache.org

Subversion (en abrégé svn) est un système de gestion de versions, distribué sous licence Apache et BSD. 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 le bon, et que seule son implémentation est en cause. Le projet a été lancé en février 2000 par CollabNet, avec l'embauche par Jim Blandy de Karl Fogel, qui travaillait déjà sur un nouveau gestionnaire de version.

Le 14 février 2010, SVN est devenu officiellement un projet de la Fondation Apache, prenant le nom d'Apache Subversion.

Sommaire

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 patch 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. Mais ce que Subversion recommande d'utiliser comme tag est d'une nature complètement différente: une fois la commande svn copy effectuée, un tag Subversion ne se rappelle absolument plus de quel numéro de révision il provient. 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 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 SVN[1]. 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

Commande Signification
add Déclare l'ajout d'une nouvelle ressource pour le prochain commit.
blame Permet 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.
cleanup Nettoie 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 Copie des ressources à un autre emplacement (localement ou dans le dépôt).
delete Déclare la suppression d'une ressource existante pour le prochain commit (ou supprime directement une ressource du dépôt).
diff Calcule la différence entre deux versions (permet de créer un patch à appliquer sur une copie locale).
export Récupère une version sans métadonnées depuis le dépôt ou la copie locale.
import Envoie une arborescence locale vers le dépôt.
info Donne les informations sur l'origine de la copie locale.
lock Verrouille un fichier.
log Donne les messages de commit d'une ressource.
merge Calcule la différence entre deux versions et applique cette différence à la copie locale.
move Déclare le déplacement d'une ressource.
propdel Enlève la propriété du fichier.
propedit Édite la valeur d’une propriété.
propget Retourne la valeur d’une propriété.
proplist Donne une liste des propriétés.
propset Ajoute une propriété.
resolved Permet de déclarer qu'un conflit de modifications est résolu.
revert Revient à une version donnée d'une ressource. Les modifications locales sont écrasées.
status (st) Indique les changements qui ont été effectués.
switch 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.
unlock Retire un verrou.

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 :

Logiciels serveurs

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

  • 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. 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 et sa réactivité plus lente que Svnserve est la possibilité de tracer les connexions des clients.

Logiciels annexes

Côté serveur

  • Trac, logiciel de gestion de projet Web utilisant Subversion, implémentant un Wiki et un système de suivi de bugs (Licence BSD).
  • RedMine, logiciel de gestion de projet Web utilisant Subversion, implémentant un Wiki et un système de suivi de bugs (Licence GPL).
  • USVN (User Friendly SVN), interface web permettant la configuration de dépôts Subversion (Licence CeCILL).
  • sventon Interface web.
  • CodingTeam, forge permettant de gérer subversion, possédant un wiki, un système de suivi des bugs et le support de Jabber.

Voir aussi

Sur les autres projets Wikimedia :

Liens externes

Officiels

Divers

Notes et références

  1. Subversion mailing lists
  2. (en) Version Control with Subversion sur http://svnbook.red-bean.com/, O'Reilly Media Gestion de versions avec Subversion


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Apache Subversion de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Apache Subversion — Subversion Developer(s) Apache Software Foundation Initial release October 20, 2000 (2000 10 20) …   Wikipedia

  • Apache Subversion — Entwickler CollabNet Aktuelle Version 1.7.1 (23. Oktober 2011) Betriebssystem …   Deutsch Wikipedia

  • Subversion — У этого термина существуют и другие значения, см. Subversion (игра). Subversion Логотип Subversion Тип централизованная …   Википедия

  • Apache Software Foundation — Pour les articles homonymes, voir Apache (homonymie). Logo de Apache Software Foundation L Apache Software Foundation (Fondation Apache) est une organisation à but non lucratif qui développe des log …   Wikipédia en Français

  • Apache-Lizenz — Die Apache Lizenz ist die Freie Software Lizenz der Apache Software Foundation. Die aktuelle Version 2.0 wurde im Januar 2004 veröffentlicht. Sie wurde gegenüber der vorherigen Version 1.1 stark erweitert. Aufgrund ihres Umfangs wird in den… …   Deutsch Wikipedia

  • Subversion (Software) — Subversion Entwickler: CollabNet Aktuelle Version: 1.6.1 (9. April 2009) Betriebssystem …   Deutsch Wikipedia

  • Subversion (logiciel) — Pour les articles homonymes, voir Subversion (homonymie) et svn. Subversion …   Wikipédia en Français

  • Subversion (software) — Subversion (logiciel) Pour les articles homonymes, voir Subversion (homonymie) et svn. Subversion …   Wikipédia en Français

  • Subversion logiciel — Subversion (logiciel) Pour les articles homonymes, voir Subversion (homonymie) et svn. Subversion …   Wikipédia en Français

  • Apache Maven — Тип Автоматизация сборки Разработчик …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”