Journal de Benoit Breton - Mot-clé - subversion2024-01-05T08:47:26+01:00Benoit BRETONurn:md5:e921e16fa84d2fd6f1764060026a5a33DotclearMigration serveur SVN multi-depoturn:md5:59624be007ca7a83d9ba9e88357857c92016-04-11T08:43:00+02:002017-11-03T08:50:38+01:00BenoitGeekeries !DebianServeursubversion <p>Lors du renouvellement d'un serveur, j'ai eu besoin de déplacer une centaine de dépôts SVN sur le nouveau.</p>
<p>Pour mémo j'en profite pour me faire une petite procédure avec installation de subversion et connexion sur LDAP.</p>
<p>Installation du serveur SVN sur Debian :</p>
<pre>
apt-get update
apt-get install subversion subversion-tools
</pre>
<p>Pour la partie LDAP j'ai aussi besoin de ça :</p>
<pre>
apt-get install libapache2-svn apache2-mpm-worker
</pre>
<p>Ensuite, il faut créer l’arborescence de base. Dans mon cas je la place dans <strong>/var/svn</strong></p>
<pre>
cd /var
mkdir svn
</pre>
<p>A partir d'ici, le SVN fonctionne. Il est déjà possible de créer un premier dépôt.</p>
<pre>
svnadmin create subversion/depot
</pre>
<p>Configuration de la liaison LDAP :</p>
<p>On commence par adapter le fichier <strong>/etc/apache2/mods-enabled/dav_svn.conf</strong> à nos besoins.</p>
<pre>
<Location /svn>
DAV svn
SVNParentPath /var/svn
SVNAutoversioning on
AuthzSVNAccessFile /var/svn/svnaccess
AuthBasicProvider ldap
AuthType Basic
AuthName "Connection subversion"
AuthLDAPURL "ldap://ldap.entreprise:389/DC=mon,DC=entreprise,DC=net?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=Utilisateur LDAP,DC=mon,DC=entreprise,DC=net"
AuthLDAPBindPassword "MotDePasse"
Require valid-user
</Location>
</pre>
<p>Relancer apache pour valider.</p>
<pre>
/etc/init.d/apache2 restart
</pre>
<p>Ensuite on crée le fichier <strong>/var/svn/svnaccess</strong> qui vas contenir la liste des droits:</p>
<p>Dans mon cas j'ai créé un groupe @admin et j'ai placé Benoit qui a tous les droits sur l'ensemble des repository.</p>
<pre>
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research
# Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = benoit,toto
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
@admin = rw
</pre>
<p>Passons à la migration des dépôts en deux étapes.</p>
<p>Première étape sauvegarder l'ensemble des dépôts. Pour cela j'utilise le dump de SVN et je zip l'ensemble dépôt par dépôt.</p>
<p>Script d'export export.sh:</p>
<pre>
for repo in `ls -1`
do
echo "Processing $repo"
svnadmin dump -q --deltas $repo | gzip -c > "/var/svn/"$repo".svn.gz"
done
</pre>
<p>Déplacer ensuite les zip sur le nouveau serveur avec filezilla par exemple.</p>
<p>Puis, utiliser le script d'import.
Celui-ci dezip les dump puis crée les dépôts svn pour finir par replacer les données.</p>
<p>Script d'import import.sh:</p>
<pre>
for repo in `ls -1`
do
temp=`echo $repo | sed 's/\..*//'`
echo "Creation du depot: $temp"
svnadmin create $temp &&
gzip -d |
sed -e '/^svn:log$/,/^PROPS-END$/ s/\x0D/ /' -e '/^svn:ignore$/,/^PROPS-END$/ s/\x0D/\n/' |
cat $repo | gzip -d | svnadmin load -q --force-uuid $temp
done
</pre>
<p>Si tout s'est bien passé, se rendre sur la page http://votreserveur/svn/depot
Vous devriez retrouver vos dépôts.</p>