<page>
    <title>Subversion (logiciel)</title>
    <id>61782</id>
    <revision>
      <id>31499050</id>
      <timestamp>2008-07-11T16:11:39Z</timestamp>
      <contributor>
        <username>ToePeu.bot</username>
        <id>290412</id>
      </contributor>
      <minor />
      <comment>robot  Modifie: [[ar:سب فيرجن]]</comment>
      <text xml:space="preserve">{{Voir homonymes|Subversion|svn}}
{{Infobox Logiciel
| nom = Subversion
| logo = 
| image = 
| description = 
| développeur = CollabNet, Inc.
| dernière version = 1.5.0
| date de dernière version = {{Date|19|juin|2008|en informatique}}
| version avancée = 
| date de version avancée = 
| environnements = [[GNU/Linux]], [[Mac OS X]], [[Microsoft Windows|Windows]]
| langue = 
| type = [[Gestion de version]]
| licences = [[Licence Apache|Apache]]/[[Licence BSD|BSD]]
| site web = [http://subversion.tigris.org subversion.tigris.org]
}}
'''Subversion''' (en abrégé '''svn''') est un [[système de gestion de versions]], distribué sous licence [[Licence Apache|Apache]] et [[Licence BSD|BSD]]. Il a été conçu pour remplacer [[Concurrent versions system|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 [[Concurrent versions system|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.

== Les apports de Subversion ==

Subversion a été écrit afin de combler certains manques de [[Concurrent versions system|CVS]]. Voici les principaux apports :

* Les ''commits'', ou publications des modifications sont [[Propriétés ACID|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éta-donné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 ;
* &lt;code&gt;svn rename&lt;/code&gt; (ou &lt;code&gt;svn move&lt;/code&gt;) permet de renommer (ou déplacer) un fichier ;
* Les répertoires et méta-données sont versionnés.

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

==Les principales commandes de Subversion==
{| class=&quot;wikitable&quot;
! 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 révision 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 révision.
|-
| 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 révisions (permet de créer un patch à appliquer sur une copie locale).
|-
| export|| Récupère une version sans méta-donné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 || Édit 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 un conflit de modifications comme résolu.
|-
| revert ||Revient à une révision donnée d'une ressource. Les modifications locales sont écrasées.
|-
| status (st) ||Indique les changements qui ont été effectués.
|-
| switch ||Met à jour la copie du dépôt.
|-
| update (up) ||Met à jour la copie locale existante depuis la dernière révision disponible sur le dépôt.
|-
| unlock ||Retire un verrou.
|}

== Logiciels clients ==
Outre l'outil en ligne de commande, plusieurs logiciels pourvus d'interface graphique existent : &lt;br /&gt;
* [[Comparaison des clients pour Subversion | Liste des clients pour Subversion]]

== Logiciels annexes ==
=== Côté serveur ===
* [[Trac (logiciel)|Trac]], logiciel de gestion de projet Web utilisant Subversion, implémentant un Wiki et un système de suivi de bugs ([[Licence BSD]]).
* [[RedMine|RedMine]], logiciel de gestion de projet Web utilisant Subversion, implémentant un Wiki et un système de suivi de bugs ([[Licence GPL]]).
* [http://usvn.info/ USVN] (User Friendly SVN), interface web permettant la configuration de dépôts Subversion ([[Licence CeCILL]]).
* [http://www.sventon.org sventon] Interface web.

== Voir aussi ==
{{Wikilivres|Gestion de version/Subversion|la gestion de version avec Subversion}}
=== Liens internes ===
* [[Git]]: gestionnaire de code source créé par [[Linus Torvalds]].
* [[CVS]]: L'ancêtre de SVN.

=== Liens externes ===
==== Officiels ====
* {{en}} [http://subversion.tigris.org/ Site officiel]
* {{en}} [http://svnbook.red-bean.com/ « Version Control with Subversion »] : Livre en libre accès écrit par les développeurs de Subversion

==== Divers ====
* Installation de subversion et d'eclipse sur le [http://doc.ubuntu-fr.org/subversion wiki ubuntu-fr.org] {{fr}}
* Installation d'Apache2 et de Subversion [http://gentoo-wiki.com/HOWTO_Apache2_with_subversion_SVN_and_DAV sous Gentoo]{{en}}, [http://www.xhtml.net/articles/subversion-apache2-debian sous Debian]{{fr}}
* {{fr}} [http://www.beroot.org/Configurations/installation-subversion-trac-debian-ubuntu Installation de subversion et de trac sur [[Debian]] et Ubuntu]
* {{fr}} [http://dev.nozav.org/intro_svn.html Introduction à Subversion] : aide-mémoire et support de formation basé sur les opérations en [[ligne de commande]]
* {{fr}} [http://www.toutprogrammer.com/wiki/Installation_et_utilisation_de_base_de_Subversion Installation et utilisation de base de Subversion] : présentation rapide de Subversion, mise en œuvre et utilisation
* {{fr}} [http://www.toutprogrammer.com/wiki/Les_hooks_de_Subversion Les hooks de Subversion] : présentation de la fonctionnalité &quot;hook&quot; de Subversion et comment utiliser celle-ci
* {{fr}} [http://hikage.developpez.com/linux/tutoriels/subversion/ Installation de Subversion &amp; USVN sur Debian] : Installation et configuration de Subversion sur [[Debian]] Sarge/Etch et de l'application USVN de gestion de dépôts

{{Portail logiciels libres}}

[[Catégorie:Système de gestion de versions libre]]

[[ar:سب فيرجن]]
[[ca:Subversion]]
[[cs:Subversion]]
[[da:Subversion]]
[[de:Subversion (Software)]]
[[en:Subversion (software)]]
[[eo:Subversion]]
[[es:Subversion]]
[[eu:Subversion]]
[[fi:Subversion]]
[[gl:Subversion]]
[[hi:सबवर्ज़न]]
[[hu:Subversion]]
[[id:Subversion]]
[[it:Subversion]]
[[ja:Subversion]]
[[ko:서브버전]]
[[lt:Subversion]]
[[nl:Subversion]]
[[no:Subversion]]
[[pl:Subversion]]
[[pt:Subversion]]
[[ru:Subversion]]
[[sk:Subversion]]
[[sr:SVN]]
[[sv:Subversion (versionshanteringssystem)]]
[[uk:Subversion]]
[[vi:Subversion]]
[[zh:Subversion]]</text>
    </revision>
  </page>