km.azerttyu.net

Accueil > Du km au texte > informatique > Travail Collaboratif > Créer un démon Subversion

Créer un démon Subversion

jeudi 25 février 2010, par km

Par défaut le paquet subversion ne fournit pas de script init.d.
Nous devons donc le coder nous même. Cet article s’appuie énormément sur la documentation d’ubuntu.

De petites adaptations sont présentes pour être conforme à la logique Debian.

Créer un dépot SVN

  1. sudoer~: addgroup svn --system
  2. sudoer~: adduser svn --system --home /var/svn-repos/ --no-create-home --ingroup svn
  3. sudoer~: chown -R svn: /var/svn-repos/

Télécharger

Configurer les fichiers

On prépare un fichier dans /etc/default/subversion. Ce fichier indique les paramètres requis à l’exécution du démon subversion.

  1. sudoer~: nano /etc/default/subversion
  1. #Virtual root for repositories served
  2. REPO=/var/svn-repos/

Télécharger

Ensuite nous préparons le script init.d pour gérer les tâches d’exécution. Le script est complétement inspiré de la documentation ubuntu

sudoer~: nano /etc/init.d/subversion

  1. #!/bin/sh -e
  2. ### BEGIN INIT INFO
  3. # Provides: subversion
  4. # Required-Start: $local_fs $remote_fs $network $syslog
  5. # Required-Stop: $local_fs $remote_fs $network $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Start/stop subversion daemon
  9. ### END INIT INFO
  10.  
  11. if [ -x /usr/bin/svnserve ] ; then
  12. HAVE_SVNSERVE=1
  13. else
  14. echo "Svnserve not installed."
  15. exit 0
  16. fi
  17.  
  18. . /lib/lsb/init-functions
  19. . /etc/default/subversion
  20.  
  21. case "$1" in
  22. start)
  23. log_action_begin_msg "Starting SVN server"
  24. start-stop-daemon --start --chuid svn:svn --exec /usr/bin/svnserve -- -d -r $REPO
  25. log_action_end_msg $?
  26. ;;
  27. stop)
  28. log_action_begin_msg "Stoping SVN server"
  29. start-stop-daemon --stop --exec /usr/bin/svnserve
  30. log_action_end_msg $?
  31. ;;
  32. force-reload|restart)
  33. $0 stop
  34. $0 start
  35. ;;
  36. *)
  37. echo "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}"
  38. exit 1
  39. ;;
  40. esac
  41.  
  42. exit 0

Télécharger

Activer le démon

Il ne faut pas oublier de rendre le script exécutable. l’utilisation de chmod suffit.

  1. sudoer~: chmod 755 /etc/init.d/subversion

Debian fournit update-rc.d un script qui permet d’appliquer au bons endroits les appels au script lors du démmarage pour cela il s’appuis sur les informations LSB. Dans notre nous nous sommes inspiré ce celles utilisées par le script apache2.

  1. sudoer~: update-rc.d subversion defaults
  1. Adding system startup for /etc/init.d/subversion ...
  2. /etc/rc0.d/K20subversion -> ../init.d/subversion
  3. /etc/rc1.d/K20subversion -> ../init.d/subversion
  4. /etc/rc6.d/K20subversion -> ../init.d/subversion
  5. /etc/rc2.d/S20subversion -> ../init.d/subversion
  6. /etc/rc3.d/S20subversion -> ../init.d/subversion
  7. /etc/rc4.d/S20subversion -> ../init.d/subversion
  8. /etc/rc5.d/S20subversion -> ../init.d/subversion

Télécharger

Messages

  • Et sinon (oui désolé, je troll)

    mkdir repo.git

    cd repo.git

    git init —bare

    git clone git@host:repo.git

  • S’lt

    Oui git c’est bien. À titre personnel, je ne travaille même qu’avec ça. Tu peux voir par exemple Giggle : Client pour GIT.

    Donc ce n’est même pas amusant, tu ne trolles pas. C’est juste hors sujet pour le coup.

    Mais ne t’inquiètes pas, tu vas avoir plein d’autres occasions :)

  • Et quel est l’intérêt, plutôt que d’utiliser Apache ?

  • Pourquoi svnserve et pas Apache/Dav_svn ? On peut noter au moins :

    • d’optimiser un peu mieux ses ressources
    • la volonté d’isoler les services

    Apache est largement plus consommateur de ressources que svnserve. Ce qui peut déjà faire pencher la balance. Une machine délicate acceptera plus facilement svnserve. On peut noter aussi qu’on limite les problématique de maintenance, du fait qu’on utilise moins d’applicatifs.

    Ce qui nous amène au second point, isoler les services. Si on souhaite passer par Apache cela amène un nombre certain de dépendances qu’on ne souhaite pas avoir à subir.

    On peut rétorquer que si on installe Trac, ça ne coûte rien de mettre en place Dav_svn. C’est une des raisons qui ne me font pas particulièrement aimer Trac :) On devrait pouvoir isoler ces services.

    En contrepartie svnserve est loin d’être idéal car on ne peut utiliser ldap pour gérer les développeurs, ce n’est pas sécurisé. Il est bien plus simple de mettre en place un https:// qu’un svn+ssh ://

    Finalement pourquoi pas Apache, parce qu’il devrait venir en complément d’un service de base fournit pas svnserve.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.