SVN, SVK · 2 min read · Feb 13, 2026
Créer un miroir en lecture seule de votre dépôt SVN avec SVK
Créer un miroir en lecture seule de votre dépôt SVN avec SVK
Disons que vous avez un SVN pour votre projet OpenSource et que vous souhaitez le miroiter vers un emplacement distant qui héberge des projets open source (comme SourceForge.net ou dev.java.net). Je vais sauter la phase d’enregistrement de compte et de projet et supposer que vous avez déjà vos identifiants et l’URL de votre dépôt SVN. Je suppose également que vous êtes sur Debian ou Ubuntu et que votre SVN fonctionne sous Apache httpd.
Il existe un outil appelé svnsync qui est fourni avec SVN 1.4 par défaut et qui est conçu exactement pour le même but, mais il y a une chose qui nous empêche de l’utiliser dans ce cas. Il nécessite un hook svn personnalisé présent sur le dépôt cible et il est impossible de personnaliser quoi que ce soit dans notre cas.
Ce que vous devez faire est d’installer SVK d’abord :
# aptitude install svkEn gros, SVK est un sur-ensemble de SVN et permet donc des astuces avancées telles que la synchronisation de dépôts. Il existe un livre sur le contrôle de version avec SVK que vous pouvez consulter comme un guide SVK approfondi. Je vais rester bref. Le concept est que vous créez un dépôt SVK (le “depot”) qui contiendrait une copie de tous les dépôts SVN impliqués (votre dépôt principal et ceux vers lesquels vous déversez des informations) et ensuite synchronisez ces copies.
Comme nous voulons que les dépôts soient synchronisés chaque fois qu’un commit est effectué, la procédure de hooks SVN serait utilisée et dans notre cas, cela se produirait sous l’utilisateur apache httpd.
Donc, pour simplifier les choses, connectons-nous sous ce compte et effectuons la routine requise.
# su www-dataMaintenant, ce que nous devons faire est d’initialiser le dépôt par défaut.
$ svk depotmapModifiez le chemin pour spécifier où vous souhaitez stocker le dépôt. Je choisirais /var/opt/svk/local.
Maintenant, vous êtes en mesure de créer au moins 2 miroirs : un pour le dépôt local et un pour le dépôt distant (rien ne vous empêche d’avoir plusieurs miroirs) :
$ svk mirror //local file:///var/opt/svnC’est ainsi que nous avons mappé l’emplacement du dépôt (nommé “local”) directement à l’emplacement du système de fichiers où se trouve le dépôt svn.
$ svk mirror //remote https://myproject.svn.sourceforge.net/svnroot/myprojectIl en va de même pour le dépôt distant, dans ce cas hébergé sur SourceForge.net. Vous devrez accepter définitivement le certificat et fournir votre nom d’utilisateur et votre mot de passe pour être mis en cache.
Comme le dépôt distant sera en lecture seule, nous le synchroniserons seulement une fois
$ svk sync //remoteet ensuite effectuer les actions qui seront plus tard effectuées par le script post-commit.
$ svk sync //local
$ svk smerge --baseless --incremental --verbatim //local //remoteLa dernière commande synchronisera le dépôt local avec le dépôt distant en préservant tous les détails des commits.
Pour que cela soit fait automatiquement après un commit dans le dépôt local, créez un fichier nommé post-commit dans le répertoire hooks de votre dépôt SVN local et mettez ces commandes dedans. Rendez-le exécutable par
$ chmod +x ./post-commit #en considérant que vous êtes dans le répertoire ''hooks''C’est tout, vérifiez-le.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.