C'est quoi Subversion ?

Subversion, c'est un logiciel de « gestion des versions », c'est-à-dire un logiciel qui permet de garder l'historique de toutes les modifications apportées à un certain nombre de fichiers. Il permet en fait beaucoup plus que cela, en particulier de retrouver les fichiers versionnés à un instant antérieur donné, ou encore de récupérer toutes les modifications entre deux moments. Wikipédia vous en dira davantage sur les grands avantages de ce logiciel. Il est utilisé par un grand nombre de développeurs, en particulier dans le monde des logiciels libres.

Subversion est un logiciel serveur multiplateforme : n'importe quel ordinateur peut héberger un serveur Subversion. Chez moi, il s'agit d'un Linux (anciennement Debian, désormais Ubuntu), mais Windows fait tout aussi bien l'affaire. De nombreux logiciels clients (logiciels pour se connecter au serveur) existent, sous toute plateforme aussi. Mais le mieux reste à venir : Subversion permet de s'interfacer avec un serveur web (typiquement, Apache). Et c'est là que c'est magique, parce que ça veut dire que les fichiers sont disponibles par un simple navigateur web, dans leur dernière version. C'est cette fonctionnalité en particulier que j'utilise pour mon dépôt Subversion.[1]

Personnellement, je m'en sers d'abord pour un projet que j'ai depuis quelques temps, qui est une galerie photo en PHP (oui je sais, ce n'est pas très original, mais allez plutôt voir de quoi il s'agit...). La configuration est très facile et hautement personalisable (on peut tout gérer via Apache en fait, donc si comme moi vous en avez l'habitude, c'est vraiment très simple). Par exemple donc, si vous tapez https://www.cyril-ravat.fr/svn/photos/ vous tombez sur le dépôt Subversion de mon application. Pour ceux qui n'ont pas très bien suivi, à aucun endroit du dépôt n'est réellement stocké un seul des fichiers que vous voyez, mais seulement les différences d'une révision à l'autre. Et les différentes versions ne sont en fait que des « instantanés » à une révision donnée. Donc un gain de place non négligeable.

Mais ce n'est pas tout ! On n'est pas obligé d'être développeur (ou de faire semblant de l'être) pour utiliser Subversion. Quand on rédige un document, comme une thèse, un article, un rapport de stage, une documentation, que sais-je, on peut très bien versionner ses fichiers. Par contre, ça marche mieux avec les fichiers en texte brut, donc les fichiers Word, pas génial. Mais si comme moi vous écrivez en LaTeX, ce sera d'un grand intérêt.

Personnalisation de l'affichage

Si vous installez chez vous un serveur Subversion et le module Apache correspondant, vous verrez un listing « moche ». La solution, c'est de rajouter dans le fichier de configuration d'Apache où vous avez déjà configuré le chemin d'accès la ligne

SVNIndexXSLT /svnindex.xsl

et de poser à la racine de votre serveur web les fichiers svnindex.xsl et svnindex.css que vous trouverez par exemple sur le dépôt Subversion des développeurs de Subversion. Moi, ça ne m'a pas suffit, parce qu'ils sont en anglais et qu'ils ne forment pas la page comme je veux. Alors je les ai modifiés, et comme vous vous y attendez le résultat et disponible à la racine de mon serveur web (je vous laisse chercher tous seuls...). Vous pouvez les prendre et vous en inspirer à nouveau.

Si vous avez du mal à faire voir votre dépôt Subversion par votre serveur web, je veux bien être gentil et vous faire part de mon fichier de configuration. Il faut Apache2, qui utilise des fichiers de configuration multiples. Il faut donc créer dans le dossier sites-available un fichier svn, en faire un lien symbolique dans sites-enable, et y mettre :

<Location /svn>
  DAV svn
  SVNParentPath "l'emplacement du dépôt sur votre serveur"
  SVNIndexXSLT /svnindex.xsl

  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Order allow,deny
    Deny from all[2]
  </LimitExcept>
  Options Indexes Multiviews
  ErrorDocument 403 /subversion.php[2]

</Location>

<Location /svn/photos>
  SVNReposName GaleriePhotos
</Location>

<Location /svn/un-chemin-quelconque>
  SVNReposName Le nom correspondant
</Location>

[1] Vous pouvez aussi vous connecter avec un client svn plus perfectionné qu'un simple navigateur web. Sous Linux, une fois subversion installé, vous pourrez essayer :

svn list https://www.cyril-ravat.fr/svn/photos/

ou encore

svn log https://www.cyril-ravat.fr/svn/photos/

Cela vous permet d'avoir accès à toutes les versions, et à l'énoncé des modifications.

[2] En fait, ces lignes sont un peu spéciales à ma configuration. En effet, je veux que quand on tape https://www.cyril-ravat.fr/svn/, on soit redirigé vers cette page, au lieu d'avoir la liste des dépôts que j'héberge. Il faut pour voir un dépôt connaître son nom et le taper à la fin de l'adresse.