mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
4.5 KiB

  1. **Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
  2. # Howto SVN
  3. ## Procédure de mise en place d'un dépôt
  4. On crée le répertoire qui contiendra les dépôts SVN :
  5. ~~~
  6. mkdir /home/svn/
  7. ~~~
  8. On crée également un groupe _svn_ qui contiendra les utilisateurs qui auront le droits d'accéder au dépôt :
  9. ~~~
  10. addgroup -q svn
  11. ~~~
  12. On peut ensuite créer un premier dépôt nommé _foo_ :
  13. ~~~
  14. svnadmin create /home/svn/foo
  15. ~~~
  16. Il est maintenant nécessaire d'adapter les droits :
  17. ~~~
  18. chgrp -R svn /home/svn/
  19. chmod 750 /home/svn/
  20. chmod -R g+rwX /home/svn/foo/
  21. chmod -R g+s /home/svn/foo/db/
  22. ~~~
  23. Enfin, on peut ajouter les utilisateurs ayant accès au svn dans le groupe svn :
  24. ~~~
  25. adduser -q jdoe svn
  26. ~~~
  27. Il est nécessaire que leur umask soit positionné à la valeur 007, on l'indiquant par exemple dans leur ~/.profile.
  28. ~~~
  29. echo umask 007 >> ~jdoe/.profile
  30. ~~~
  31. ## Authentification sans compte UNIX
  32. Éditer le fichier svnserve.conf à votre convenance, typiquement, droits d'écriture en anonyme ou pas, etc. Mais surtout, indiquez le fait qu'on utilise une base de données des utilisateurs et mot de passes dans un fichier passwd.
  33. ~~~
  34. [general]
  35. anon-access = none
  36. auth-access = write
  37. password-db = passwd
  38. realm = Nom du repo
  39. ~~~
  40. Ajouter les utilisateurs et leur mot de passes dans le fichier conf/passwd :
  41. ~~~
  42. [users]
  43. # harry = harryssecret
  44. # sally = sallyssecret
  45. toto = tata
  46. ~~~
  47. ## SVN+HTTP
  48. Installation et activation des modules requis :
  49. ~~~
  50. # aptitude install libapache2-svn
  51. # a2enmod dav_svn
  52. ~~~
  53. Configuration du VHost :
  54. ~~~
  55. <Location /svn>
  56. DAV svn
  57. SVNParentPath /home/svn
  58. AuthType Basic
  59. AuthName "SVN"
  60. AuthUserFile /home/svn/.htpasswd
  61. AuthzSVNAccessFILE /home/svn/.authz
  62. Require valid-user
  63. Allow from all
  64. </Location>
  65. ~~~
  66. Dans le cas de plusieurs dépôts, on vérifiera de bien utiliser la directive "SVNParentPath".
  67. Pour un seul dépôt, la directive "SVNPath" peut être utilisée, et dans ce cas doit pointer directement sur le dépôt en question.
  68. ## SVN+HTTP et authentification LDAP
  69. Même pré-requis que précédemment, avec en plus :
  70. ~~~
  71. # a2enmod authnz_ldap
  72. ~~~
  73. Et la configuration suivante :
  74. ~~~
  75. <Location /svn>
  76. DAV svn
  77. SVNParentPath /home/svn
  78. AuthType Basic
  79. AuthName "SVN"
  80. AuthBasicProvider ldap
  81. AuthzLDAPAuthoritative on
  82. AuthLDAPURL "ldap://127.0.0.1:389/dc=example,dc=com?uid?sub?(objectClass=*)"
  83. AuthLDAPGroupAttribute memberUid # Chercher l'attribut memberUid au lieu de uniqueMember
  84. AuthLDAPGroupAttributeIsDN off # Ne pas chercher un DN complet (uid=user,dc=example,dc=com) dans l'attribut memberUid mais uniquement l'uid
  85. Require ldap-group cn=svn,ou=group,dc=example,dc=com
  86. Allow from all
  87. </Location>
  88. ~~~
  89. ## Autoriser la modification des révisions
  90. Par défaut c'est désactivé. On peut l'activer en activant le hook `pre-revprop-change`. Pour cela il suffit de renommer en supprimant l'extension tmpl, et en s'assurant qu'il y ait les droits d'exécution.
  91. Exemple de message d'erreur si ce n'est pas autorisé :
  92. ~~~
  93. Repository has not been enabled to accept revision propchanges;
  94. ask the administrator to create a pre-revprop-change hook
  95. ~~~
  96. Si l’on veut restreindre la modification des révisions a un utilisateur en particulier, il faut ajouter ceci dans le hook `pre-revprop-change` :
  97. ~~~
  98. if [ ! "$USER" = "user" ]; then
  99. echo "Changing revision properties is only allowed to user." >&2
  100. exit 1
  101. fi
  102. ~~~
  103. ## FAQ
  104. Lorsque l'on obtient un message du type :
  105. ~~~
  106. $ svn checkout svn+ssh://SERVEUR/svn/sendsms2mobyt
  107. svn: Erreur de base Berkeley pour le système de fichiers '/svn/sendsms2mobyt/db' en ouvrant l'environnement :
  108. svn: DB_VERSION_MISMATCH: Database environment version mismatch
  109. svn: bdb: Program version 4.6 doesn't match environment version 4.4
  110. ~~~
  111. ... c'est que la version du dépôt est obsolète. Il faut la mettre à jour sur le serveur SVN :
  112. ~~~
  113. $ svnadmin recover sendsms2mobyt/
  114. Verrou du dépôt acquis.
  115. Patientez; le rétablissement du dépôt peut être long...
  116. Fin du rétablissement.
  117. La dernière révision du dépôt est 12
  118. ~~~
  119. Si l'on veut commiter en svn+ssh:// avec un login différent du checkout :
  120. On peut forcer l'utiliser via le $HOME/subversion/config
  121. ~~~
  122. [tunnels]
  123. ssh = $SVN_SSH ssh -l <user>
  124. ~~~