Retour : Page Principale > sommaire aide > sommaire aide logiciels > Aide SVN
chown -R svn:nogroup /home/svn/depot/; chmod -R 775 /home/svn/depot/
Le type peut prendre les valeurs : applications, eflore, divers ou sites.
rm -fR mon_projet
mv projet_a_archiver /home/svn/depot/[type]/archives/
Si le dossier archives n'existe pas, commencer par le créer avec :
mkdir archives
chown -R svn:nogroup /home/svn/depot/; chmod -R 775 /home/svn/depot/
Puis mettez à jour le fichier de config de websvn présent dans /home/svn/www/websvn/include/config.php en ajoutant l'entrée ci-dessous vers la ligne 100 :
$config->parentPath('/home/svn/depot/[type]/archives', '[type]/Archives');
et le fichier httpd.conf en rajoutant une entrée pour ce dossier et en redémarrant le serveur Apache.
Si vous obtenez ce message dans Eclipse le problème peut venir de l'interface SVN utilisée.
Dans ce cas là , dans les préférences d'Eclipse, pour la gestion de SVN basculer de l'utilisation de JavaHL (JNI) à SVNKit (Pure Java).
(Sur HELIOS : Window > Preferences puis dérouler Team > SVN et trouver la liste déroulante SVN Interface)
Solution pour réparer le problème sur le dépôt SVN :
Cette erreur peut être causé par le contenu de la propriété svn:author dans le fichier de log. Si ce contenu contient un accent, cette erreur peut survenir.
Ainsi, si Eclipse demande un nom d'auteur pour remplacer le login lors des commit sur le dépôt, ne pas mettre d'accents au prénom et au nom !
Pour résoudre le problème faite un checkout en local, dans une console tapez :
svn checkout mon_url
Vous obtiendrez donc l'erreur :
svn: XML malformé: not well-formed (invalid token) à la ligne 16 (le numéro de ligne peut varier)
Juste au dessus de l'erreur, vous devriez avoir une ligne comme celle ci :
A papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/menu.php
Visualiser alors le fichier de log présent dans le dossier caché .svn situé dans le dossier de ce dernier fichier papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/ :
vi papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/.svn/log
Et regardez la ligne : 15 (le numéro de ligne indiqué par l'erreur moins 1).
Vous devriez trouver un caractère accentué.
<modify-entry
Si comme ici c'est dans l'attribut last-author, il vous faudra corriger le problème avec la commande :
svn propset --revprop -r 1998 svn:author "Aurelien Peronnet" svn+ssh://jp_milcent@svn.adullact.net/svnroot/papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/menu.php
Mais pour utiliser cette commande il faut modifier le dépôt svn.
Dans le dossier hooks :
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
# Autorise la modification de la propriété log
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then
# Autorise la modification de la propriété auteur
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then
echo "Modification des propriétés de révision autre que svn:log & svn:author interdite" >&2
exit 1
export SVN_NUMERO_REVISION_GLOBAL=`svnversion -n`; perl -e 'print "Révision:".$ENV{SVN_NUMERO_REVISION_GLOBAL},"\n"' perl -pi -e 's/"\$RevisionGlobale:? ?[^\$]* ?\$"/"\$RevisionGlobale: $ENV{SVN_NUMERO_REVISION_GLOBAL} \$"/g' $APPDIR/src/org/tela_botanica/client/Mediateur.java
Il faut bien entendu, indiquer le fichier du projet où se trouve le mot-clé : "$RevisionGlobale$" qui sera remplacé par "$RevisionGlobale: le_numéro $".
Ajouter un login et mot de passe pour l'utilisateur : /home/svn/conf/htpasswd en utilisant http://www.htaccesstools.com/htpasswd-generator/ par exemple
Ajouter l'utilisateur au groupe @svn dans : vi /home/svn/conf/access
Sélectionner le dossier où se trouve les sources du projet à importer dans le référentiel.
Mettre le commentaire "Import initial".
Une fois importé, actualiser le dossier "trunk" puis faire un checkout pour récupérer les sources dans son espace de travail Eclipse.
Il est nécessaire de réaliser le dump de chaque dépôt à l'aide du binaire svnadmin 1.7 :
svnadmin dump /home/svn/depot/applications/annuaire > /home/svn/dump/2013-08-19/annuaire.dump
Puis il est possible de compiler la nouvelle version de SVN. Une fois compiler, effecteur les manipulations suivantes:
svn copy http://svn.tela-botanica.net/svn/applications/coel/trunk@1391 http://svn.tela-botanica.net/svn/applications/coel/ -m "Résurection du trunk avec l'historique depuis la révision 1391"
Il vous faut bien entendu remplacer le numéro de révision (ici 1391) par celle que vous désirez et indiquer les urls correctes de votre projet.
Note via le websvn en se plaçant sur le dossier root du projet, il est possible d'accéder à l'ensemble de l'historique du projet via le lien : "Afficher le journal"
/svnadmin dump /home/svn/depot/[type]/[mon_application_ou_site]/ > /home/svn/www/dump/[mon_application_ou_site].dump
Fabriquer un dump filtré avec svndumpfilter en incluant ou excluant les dossier désirés avec include ou exclude
svndumpfilter include [mon_dossier_a_deplacer] < [mon_application_ou_site].dump > [mon_application_ou_site].filtre.dump
Importer le dump dans le dépot de destination avec load
svnadmin load /home/svn/depot/[type]/[mon_application_ou_site_de_destination]/ < /home/svn/www/dump/[mon_application_ou_site].filtre.dump
Si le dossier n'est pas au bon endroit dans le dépot, on peut le déplacer à l'aide des commandes de déplacement svn habituelles.
Nous allons utiliser la commadne svnsync.
Pour cela sur le dépôt miroir, ajouter un utilisateur de nom svnsync dans SVN :
Modifier les fichiers access et htpasswd présent dans /home/svn/conf/ .
Pour access pour le dépôt SVN papyrus :
[papyrus:/]
syncuser = rw
* = r
Pour htpasswd utiliser la commande d'ajout (voir ci-dessus).
Toujours sur le dépôt miroir créer le dépôt qui servira de copie : voir les instructions ci-dessus.
Ajouter un hook du nom de pre-revprop-change en copiant le template pre-revprop-change.tmpl dans /home/svn/depot/applications/papyrus/hooks/ avec les bons droits (755) contenant :
#!/bin/sh
USER="$3"
if [ "$USER" = "syncuser" ]; then exit 0; fi
echo "Seul l'utilisateur syncuser peut changer les revprops" >&2
exit 1
Ajouter un hook du nom de start-commit en copiant le template start-commit.tmpl dans /home/svn/depot/applications/papyrus/hooks/ avec les bons droits (755) contenant :
if [ "$USER" = "syncuser" ]; then exit 0; fi
echo "Seul l'utilisateur syncuser peut commiter de nouvelles révisions" >&2
exit 1
Initialiser la synchronisation avec la commande :
svnsync init --sync-username syncuser file:///home/svn/depot/applications/papyrus svn://svn.adullact.net/svnroot/papyrus-v2
Lancer la synchronisation avec la commande :
svnsync sync --sync-username syncuser file:///home/svn/depot/applications/papyrus
En cas de plantage, il est possible de réinitialiser la synchronisation avec la commande :
svn propdel svn:sync-lock --revprop -r 0 http://svn.tela-botanica.net/svn/applications/papyrus
Sur le dépôt source rajouter les hooks suivant pour assurer la synchronisation après chaque changement :
0,15 08-20 * * * /usr/local/bin/svnsync sync --sync-username syncuser --non-interactive file:///home/svn/depot/applications/papyrus
svn propdel svn:sync-lock --revprop -r 0 file:///home/svn/depot/applications/eflore
puis relancer la synchonisation avec la commande svnsync (voir ci-dessus et crontab -e).
Webographie :
Pour compiler Subversion modifier la version du script puis le lancer sur le serveur :
/home/admin/subversion_1.x.x_version_x.sh
Il faut aussi compiler la librairie neon pour pouvoir utiliser les urls svn de type http. Voir : http://www.webdav.org/neon/
Installer le dépôt SVN :
Pour installer le dépôt svn dans un dossier /home/svn, il est nécessaire de créer un domaine web comme d'habitude (avec OVHM). Puis ajouter les dossiers :
Il semblerait que pour que cela fonctionne et éviter une erreur de type "txn-current-lock: Permission denied", il soit nécessaire de passer le dépot (/home/svn/depot/) avec comme groupe celui d'apache soit dans notre cas : nogroup. Sinon, il est possible de lire les dépôt mais impossible de faire des commit ou delete...
Puis se mettre dans /home/svn/www et lancer la commande : svn export --force --username guest http://websvn.tigris.org/svn/websvn/tags/x.x ./websvn
Pour la configuration de Websvn voir : http://forums.asmallorange.com/index.php?showtopic=6243
En gros, il faut copier le fichier include/distconfig.php en include/config.php et modifier son contenu en fonction de l'installation.
Il est nécessaire de désactiver le safe_mode pour permettre l'affichage du contenu des fichiers...
Installer enscript avec apt-get install enscript pour pouvoir visualiser le contenu des fichiers sans extension
Corrections Ă apporter dans include/config.php : ajouter les chemins vers les binaires enscript, tar, gzip, zip, sed
Pour trouver les chemins des binaires, utiliser la commande which enscript etc.
Note: le chemin n'inclut pas la commande. Ex: /usr/bin et non /usr/bin/enscript
Pour les versions de websvn 2.3.3.* , corriger le fichier include/svnlook.php : remplacer la ligne 643 par
svnadmin dump /var/lib/subversion/myproject > ~/myproject.svndump
old-server# scp ~/myproject.svndump new-server:
new-server# svnadmin create /home/svn/depot/mon_projet
new-server# chown -R svn:users /home/svn/depot/
new-server# chmod -R 705 /home/svn/depot/
new-server# svnadmin load /home/svn/depot/mon_projet < ~/mon_projet.svndump
Télécharger sur votre ordinateur les fichiers du dépôt CVS.
Vous allez créer un fichier de dump SVN qu'il suffira ensuite de charger dans votre dépôt SVN via la commande :
./cvs2svn --dumpfile=~/tmp/svndump/papyrus.svndump --fallback-encoding=ISO-8859-15 ~/tmp/mes_sources_cvs/mon_projet/
Pour Papyrus :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/papyrus.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus
Pour Bazar :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/bazar.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/bazar
Pour Galerie :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/galerie.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/gallerie
Pour Intégrateur Wikini :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/integrateur_wikini.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/integrateur_wikini
Pour Projet :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/projet.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/projet
Envoyer le fichier de dump SVN sur le serveur où se trouve votre dépôt SVN :
scp ~/tmp/svndump/papyrus.svndump root@193.54.123.216:/home/admin/svn_dump/
Loguez vous sur votre serveur :
ssh root@193.54.123.216
Créer le projet SVN puis charger le dump :
svnadmin create /home/svn/depot/applications/papyrus
chown -R svn:nogroup /home/svn/depot/
chmod -R 775 /home/svn/depot/
svnadmin load /home/svn/depot/applications/papyrus < /home/admin/svn_dump/papyrus.svndump
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/bibliobota.svndump --encoding=iso-8859-15 /home/jpm/Stockage/svn/cvs_eflore/bibliobota
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/chorologie.svndump --encoding=iso-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/chorologie
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/herbiers.svndump --encoding=iso-8859-15 /home/jpm/Stockage/svn/cvs_eflore/herbiers
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v1.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v2.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel_v2
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v2-gwt1.5.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel_v2_gwt1.5/
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/jrest.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/jrest/
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-xul.svndump --encoding=ISO-8859-15 /home/jpm/Stockage/svn/cvs_eflore/eflore/xul
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-integration-v1.svndump --encoding=ISO-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/eflore/integration_v1
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-consultation-v1.svndump --encoding=ISO-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/eflore/consultation_v1
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-consultation-v2.svndump --encoding=ISO-8859-15 --exclude=IMPORTATION_INITIALE_TB --exclude=livraison_bdnff_v3_v4 --exclude=IMPORT_INITIAL /home/jpm/Stockage/svn/cvs_eflore/eflore/consultation_v2
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore.svndump --encoding=ISO-8859-15 --exclude=IMPORTATION_INITIALE_TB --exclude=livraison_bdnff_v3_v4 --exclude=IMPORT_INITIAL --exclude=eflore_bdd_multiprojet_historique --exclude=eflore_v1-1 --exclude=eflore_v1_1_2 --exclude=Module_ZG_1_2 --exclude=Racine_Bdnff_v3_v4 --exclude=Racine_eflore_v1_1_1 --exclude=Racine_eflore_v1_2 --exclude=Racine_livraison_bdnbe_v1 --exclude=Racine_livraison_bdnff_v3_v4 --exclude=VERSION_07-X-2004 --exclude=VERSION_31-VIII-2004 --exclude=Bdnff_v3_v4 --exclude=eflore_v1_1_1 --exclude=eflore_v1_2 --exclude=livraison_bdnbe_v1 /home/jpm/Stockage/svn/cvs_eflore_test/eflore/
/opt/lampp/bin/php analyseur.php -t v -e /home/jpm/Stockage/svn/cvs/papyrus
Puis effectuer le remplacement des mots à problèmes à l'aide du fichier de correspondance :
/opt/lampp/bin/php analyseur.php -t rr -c /home/jpm/web/tela_conception/analyste_txt/correspondance.csv -e /home/jpm/Stockage/svn/cvs/papyrus
Administration SVN
Pour les commandes SVN utiles, voir CommandesSVNPour créer un nouveau projet dans le dépôt SVN
svnadmin create /home/svn/depot/[type]/[mon_application] ou [mon_domaine.mon_extenssion]chown -R svn:nogroup /home/svn/depot/; chmod -R 775 /home/svn/depot/
Le type peut prendre les valeurs : applications, eflore, divers ou sites.
Pour supprimer un projet du dépôt SVN
cd /home/svn/depot/[type]/rm -fR mon_projet
Pour archiver un projet dans le dépôt SVN
cd /home/svn/depot/[type]/mv projet_a_archiver /home/svn/depot/[type]/archives/
Si le dossier archives n'existe pas, commencer par le créer avec :
mkdir archives
chown -R svn:nogroup /home/svn/depot/; chmod -R 775 /home/svn/depot/
Puis mettez à jour le fichier de config de websvn présent dans /home/svn/www/websvn/include/config.php en ajoutant l'entrée ci-dessous vers la ligne 100 :
$config->parentPath('/home/svn/depot/[type]/archives', '[type]/Archives');
et le fichier httpd.conf en rajoutant une entrée pour ce dossier et en redémarrant le serveur Apache.
Erreur : répertoire "lock" après "Erreur : svn: XML malformé" lors d'un checkout
Supprimer le projet complet dans Eclipse, puis conformément à la remarque ci-dessous basculer de JavaHL (JNI) à SVNKit (Pure Java).Erreur : svn: XML malformé: not well-formed (invalid token) à la ligne 16
Solution pour contourner le problème en téléchargement :Si vous obtenez ce message dans Eclipse le problème peut venir de l'interface SVN utilisée.
Dans ce cas là , dans les préférences d'Eclipse, pour la gestion de SVN basculer de l'utilisation de JavaHL (JNI) à SVNKit (Pure Java).
(Sur HELIOS : Window > Preferences puis dérouler Team > SVN et trouver la liste déroulante SVN Interface)
Solution pour réparer le problème sur le dépôt SVN :
Cette erreur peut être causé par le contenu de la propriété svn:author dans le fichier de log. Si ce contenu contient un accent, cette erreur peut survenir.
Ainsi, si Eclipse demande un nom d'auteur pour remplacer le login lors des commit sur le dépôt, ne pas mettre d'accents au prénom et au nom !
Pour résoudre le problème faite un checkout en local, dans une console tapez :
svn checkout mon_url
Vous obtiendrez donc l'erreur :
svn: XML malformé: not well-formed (invalid token) à la ligne 16 (le numéro de ligne peut varier)
Juste au dessus de l'erreur, vous devriez avoir une ligne comme celle ci :
A papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/menu.php
Visualiser alors le fichier de log présent dans le dossier caché .svn situé dans le dossier de ce dernier fichier papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/ :
vi papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/.svn/log
Et regardez la ligne : 15 (le numéro de ligne indiqué par l'erreur moins 1).
Vous devriez trouver un caractère accentué.
<modify-entry
- committed-rev="1998"
- committed-date="2007-02-09T16:36:17.937500Z"
- name="menu.php"
- last-author="Aurélien Peronnet"
- uuid="466bc291-b22d-3743-ba76-018ba5011628"/>
Si comme ici c'est dans l'attribut last-author, il vous faudra corriger le problème avec la commande :
svn propset --revprop -r 1998 svn:author "Aurelien Peronnet" svn+ssh://jp_milcent@svn.adullact.net/svnroot/papyrus-v2/branches/v5.0-ouadji/papyrus/applettes/menu/menu.php
Mais pour utiliser cette commande il faut modifier le dépôt svn.
Dans le dossier hooks :
- modifier le fichier pre-revprop-change.tmpl en y plaçant ceci :
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
# Autorise la modification de la propriété log
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then
- exit 0;
# Autorise la modification de la propriété auteur
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then
- exit 0;
echo "Modification des propriétés de révision autre que svn:log & svn:author interdite" >&2
exit 1
- copier le fichier pre-revprop-change.tmpl en pre-revprop-change
- donner les droits d'exécution au fichier pre-revprop-change
Utiliser le numéro de révision global de SVN
Dans un script de compilation ou réalisant la mise en ligne de l'application ajouter :export SVN_NUMERO_REVISION_GLOBAL=`svnversion -n`; perl -e 'print "Révision:".$ENV{SVN_NUMERO_REVISION_GLOBAL},"\n"' perl -pi -e 's/"\$RevisionGlobale:? ?[^\$]* ?\$"/"\$RevisionGlobale: $ENV{SVN_NUMERO_REVISION_GLOBAL} \$"/g' $APPDIR/src/org/tela_botanica/client/Mediateur.java
Il faut bien entendu, indiquer le fichier du projet où se trouve le mot-clé : "$RevisionGlobale$" qui sera remplacé par "$RevisionGlobale: le_numéro $".
Pour créer un nouvel utilisateur :
Actuellement SVN est sur Sycomore (dans le doute, pinger svn.tela-botanica.net)Ajouter un login et mot de passe pour l'utilisateur : /home/svn/conf/htpasswd en utilisant http://www.htaccesstools.com/htpasswd-generator/ par exemple
Ajouter l'utilisateur au groupe @svn dans : vi /home/svn/conf/access
Importer des sources dans le Référentiel SVN
À l'aide d'Eclipse, créer 3 dossier à la racine de l'url http://svn.tela-botanica.net/svn/type/nom_du_depot :- trunk
- branches
- tags
Sélectionner le dossier où se trouve les sources du projet à importer dans le référentiel.
Mettre le commentaire "Import initial".
Une fois importé, actualiser le dossier "trunk" puis faire un checkout pour récupérer les sources dans son espace de travail Eclipse.
Comment ajouter à SVN la gestion des propriétés (keywords ou tags)
Se placer sur le dossier principale d'un dossier dans Eclipse. Clic droit : Team > set Properties. Dans la fenĂŞtre :- mettre svn:keywords dans le champ "Property name",
- dans "Enter a text property" mettre : Id Author Date Revision HeadURL
- cocher "Set property recursively"
- commiter les fichiers
Comment mettre à jour un dépôt SVN (exemple de 1.7 à 1.8) ?
La démarche ci-dessous décrit la manip à effectuer, mais deux scripts automatises ces modifications. Ils sont disponibles dans le dossier : /home/svn/dump . Il s'agit de :- migrationSvnDump.sh : pour créer les dumps de chaque dépôt
- migrationSvnLoad.sh : pour recréer les dépôts et charger les dumps
Il est nécessaire de réaliser le dump de chaque dépôt à l'aide du binaire svnadmin 1.7 :
svnadmin dump /home/svn/depot/applications/annuaire > /home/svn/dump/2013-08-19/annuaire.dump
Puis il est possible de compiler la nouvelle version de SVN. Une fois compiler, effecteur les manipulations suivantes:
- déplacer l'ancien dépot : mv /home/svn/depot/applications/annuaire /home/svn/depot/applications/annuaire-old
- recréer le dépôt avec la nouvelle version : svnadmin create /home/svn/depot/applications/annuaire
- recharger les données : svnadmin load /home/svn/depot/applications/annuaire < /home/svn/dump/2013-08-19/annuaire.dump
Comment restaurer le trunk d'un projet SVN après une erreur de suppression ?
Pour garder l'historique du trunk, il suffit depuis un client de lancer la commande suivante (le dossier trunk doit bien sûr être absent du dépôt) :svn copy http://svn.tela-botanica.net/svn/applications/coel/trunk@1391 http://svn.tela-botanica.net/svn/applications/coel/ -m "Résurection du trunk avec l'historique depuis la révision 1391"
Il vous faut bien entendu remplacer le numéro de révision (ici 1391) par celle que vous désirez et indiquer les urls correctes de votre projet.
Note via le websvn en se plaçant sur le dossier root du projet, il est possible d'accéder à l'ensemble de l'historique du projet via le lien : "Afficher le journal"
Comment déplacer un dossier d'un dépot dans un autre sans perdre l'historique
Dumper le dépot tout entier avec/svnadmin dump /home/svn/depot/[type]/[mon_application_ou_site]/ > /home/svn/www/dump/[mon_application_ou_site].dump
Fabriquer un dump filtré avec svndumpfilter en incluant ou excluant les dossier désirés avec include ou exclude
svndumpfilter include [mon_dossier_a_deplacer] < [mon_application_ou_site].dump > [mon_application_ou_site].filtre.dump
Importer le dump dans le dépot de destination avec load
svnadmin load /home/svn/depot/[type]/[mon_application_ou_site_de_destination]/ < /home/svn/www/dump/[mon_application_ou_site].filtre.dump
Si le dossier n'est pas au bon endroit dans le dépot, on peut le déplacer à l'aide des commandes de déplacement svn habituelles.
Synchronisation de 2 dépôts svn
Ressources :Nous allons utiliser la commadne svnsync.
Pour cela sur le dépôt miroir, ajouter un utilisateur de nom svnsync dans SVN :
Modifier les fichiers access et htpasswd présent dans /home/svn/conf/ .
Pour access pour le dépôt SVN papyrus :
[papyrus:/]
syncuser = rw
* = r
Pour htpasswd utiliser la commande d'ajout (voir ci-dessus).
Toujours sur le dépôt miroir créer le dépôt qui servira de copie : voir les instructions ci-dessus.
Ajouter un hook du nom de pre-revprop-change en copiant le template pre-revprop-change.tmpl dans /home/svn/depot/applications/papyrus/hooks/ avec les bons droits (755) contenant :
#!/bin/sh
USER="$3"
if [ "$USER" = "syncuser" ]; then exit 0; fi
echo "Seul l'utilisateur syncuser peut changer les revprops" >&2
exit 1
Ajouter un hook du nom de start-commit en copiant le template start-commit.tmpl dans /home/svn/depot/applications/papyrus/hooks/ avec les bons droits (755) contenant :
if [ "$USER" = "syncuser" ]; then exit 0; fi
echo "Seul l'utilisateur syncuser peut commiter de nouvelles révisions" >&2
exit 1
Initialiser la synchronisation avec la commande :
svnsync init --sync-username syncuser file:///home/svn/depot/applications/papyrus svn://svn.adullact.net/svnroot/papyrus-v2
Lancer la synchronisation avec la commande :
svnsync sync --sync-username syncuser file:///home/svn/depot/applications/papyrus
En cas de plantage, il est possible de réinitialiser la synchronisation avec la commande :
svn propdel svn:sync-lock --revprop -r 0 http://svn.tela-botanica.net/svn/applications/papyrus
Sur le dépôt source rajouter les hooks suivant pour assurer la synchronisation après chaque changement :
- cp post-commit.tmpl post-commit; vi post-commit et ajouter : svnsync --non-interactive --sync-username svnsync --sync-password mot_de_passe sync http://svn.tela-botanica.net/svn/applications/papyrus &
- cp post-revprop-change.tmpl post-revprop-change; vi post-revprop-change et ajouter : svnsync --non-interactive copy-revprops --sync-username svnsync --sync-password mot_de_passe sync http://svn.tela-botanica.net/svn/applications/papyrus ${REV} &
0,15 08-20 * * * /usr/local/bin/svnsync sync --sync-username syncuser --non-interactive file:///home/svn/depot/applications/papyrus
Erreur : "Échec a l'obtention du verrou du dépôt destination, tenu par 'sequoia:*'"
Lancer la commande suivante sur Sequoia (dans le cas d'eFlore ici) :svn propdel svn:sync-lock --revprop -r 0 file:///home/svn/depot/applications/eflore
puis relancer la synchonisation avec la commande svnsync (voir ci-dessus et crontab -e).
Installation de SVN sur un serveur
Webographie :
- Tutoriel d'installation : http://www.toutprogrammer.com/wiki/Installation_et_utilisation_de_base_de_Subversion
- Un autre tutoriel : http://hikage.developpez.com/linux/tutoriels/subversion/
- Virtual host, listing des projets en xml+Dav encapsulé dans du html : http://forum.hardware.fr/hfr/OSAlternatifs/Logiciels-2/apche2-plusieurs-repositories-sujet_63728_1.htm
Pour compiler Subversion modifier la version du script puis le lancer sur le serveur :
/home/admin/subversion_1.x.x_version_x.sh
Il faut aussi compiler la librairie neon pour pouvoir utiliser les urls svn de type http. Voir : http://www.webdav.org/neon/
Installer le dépôt SVN :
Pour installer le dépôt svn dans un dossier /home/svn, il est nécessaire de créer un domaine web comme d'habitude (avec OVHM). Puis ajouter les dossiers :
- conf : pour les fichiers de droits d'accès à svn
- depot : pour les dépots svn
- www : contiendra le websvn
""
# SVN.TELA-BOTANICA.NET
<VirtualHost 193.54.123.216:80>
ServerAdmin webmestre@tela-botanica.org
DocumentRoot /home/svn/www
SuexecUserGroup svn users
ServerName svn.tela-botanica.net
ServerAlias www.svn.tela-botanica.net
CustomLog logs/svn-access_log combined
ScriptAlias /cgi-bin/ /home/svn/cgi-bin/
AddHandler x-httpd-php5 .php
<Location /svn>
DAV svn
Require valid-user
SVNParentPath /home/svn/depot/
# Indique comment authentifier les utilisateurs
AuthType Basic
AuthName "Tela Botanica - Dépôt SVN"
AuthUserFile /home/svn/conf/htpasswd
AuthzSVNAccessFile /home/svn/conf/access
</Location>
</VirtualHost>
""
Il semblerait que pour que cela fonctionne et éviter une erreur de type "txn-current-lock: Permission denied", il soit nécessaire de passer le dépot (/home/svn/depot/) avec comme groupe celui d'apache soit dans notre cas : nogroup. Sinon, il est possible de lire les dépôt mais impossible de faire des commit ou delete...
Installation de Websvn
Pour exporter la dernière version de Websvn regarder sur le dépôt le dernier tag stable : http://websvn.tigris.org/svn/websvn/tags/Puis se mettre dans /home/svn/www et lancer la commande : svn export --force --username guest http://websvn.tigris.org/svn/websvn/tags/x.x ./websvn
Pour la configuration de Websvn voir : http://forums.asmallorange.com/index.php?showtopic=6243
En gros, il faut copier le fichier include/distconfig.php en include/config.php et modifier son contenu en fonction de l'installation.
Il est nécessaire de désactiver le safe_mode pour permettre l'affichage du contenu des fichiers...
Installer enscript avec apt-get install enscript pour pouvoir visualiser le contenu des fichiers sans extension
Corrections Ă apporter dans include/config.php : ajouter les chemins vers les binaires enscript, tar, gzip, zip, sed
Pour trouver les chemins des binaires, utiliser la commande which enscript etc.
Note: le chemin n'inclut pas la commande. Ex: /usr/bin et non /usr/bin/enscript
Pour les versions de websvn 2.3.3.* , corriger le fichier include/svnlook.php : remplacer la ligne 643 par
} else if ($ext && array_key_exists($ext, $extEnscript)) {
Migration d'un dépôt SVN à un autre dépôt SVN
Quelques commandes trouver sur le blog Mirmo Dynamics :svnadmin dump /var/lib/subversion/myproject > ~/myproject.svndump
old-server# scp ~/myproject.svndump new-server:
new-server# svnadmin create /home/svn/depot/mon_projet
new-server# chown -R svn:users /home/svn/depot/
new-server# chmod -R 705 /home/svn/depot/
new-server# svnadmin load /home/svn/depot/mon_projet < ~/mon_projet.svndump
Migration d'un dépôt CVS à un dépôt SVN
Commencer par télécharger Cvs2Svn. Vous trouverez de la documentation sur cet utilitaire sur son site web.Télécharger sur votre ordinateur les fichiers du dépôt CVS.
Vous allez créer un fichier de dump SVN qu'il suffira ensuite de charger dans votre dépôt SVN via la commande :
./cvs2svn --dumpfile=~/tmp/svndump/papyrus.svndump --fallback-encoding=ISO-8859-15 ~/tmp/mes_sources_cvs/mon_projet/
Pour Papyrus :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/papyrus.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus
Pour Bazar :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/bazar.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/bazar
Pour Galerie :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/galerie.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/gallerie
Pour Intégrateur Wikini :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/integrateur_wikini.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/integrateur_wikini
Pour Projet :
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/projet.svndump --encoding=iso-8859-15 --force-branch=livraison_aha --force-tag=Racine_livraison_aha --exclude=Multilinguisme --exclude=VERSION_0_20 --exclude=INITIAL_IMPORT_TB --exclude=IMPORTATION_INITIALE_BAZAR --exclude=Root_Multilinguisme --exclude=MORE_VERSION_0_1 --exclude=INITIAL_IMPORT_RELEASE_1 --exclude=IMPORT_INITIAL_BAZAR --exclude=TEXT_WIKI_PAPYRUS_V_1_0 --exclude=TEXT_WIKI_WIKINI_V_1_0 --exclude=VERSION_0_10_XHTML_STRICT --exclude=VERSION_0_20_XHTML_STRICT --exclude=VERSION_0_21 --exclude=Racine_aha /home/jpm/Stockage/svn/cvs/papyrus/client/projet
Envoyer le fichier de dump SVN sur le serveur où se trouve votre dépôt SVN :
scp ~/tmp/svndump/papyrus.svndump root@193.54.123.216:/home/admin/svn_dump/
Loguez vous sur votre serveur :
ssh root@193.54.123.216
Créer le projet SVN puis charger le dump :
svnadmin create /home/svn/depot/applications/papyrus
chown -R svn:nogroup /home/svn/depot/
chmod -R 775 /home/svn/depot/
svnadmin load /home/svn/depot/applications/papyrus < /home/admin/svn_dump/papyrus.svndump
Pour le dépôt eFlore
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/bibliobota.svndump --encoding=iso-8859-15 /home/jpm/Stockage/svn/cvs_eflore/bibliobota
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/chorologie.svndump --encoding=iso-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/chorologie
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/herbiers.svndump --encoding=iso-8859-15 /home/jpm/Stockage/svn/cvs_eflore/herbiers
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v1.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v2.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel_v2
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/cel-v2-gwt1.5.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/Cel_v2_gwt1.5/
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/jrest.svndump --encoding=utf-8 /home/jpm/Stockage/svn/cvs_eflore/eflore/administration_v1/jrest/
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-xul.svndump --encoding=ISO-8859-15 /home/jpm/Stockage/svn/cvs_eflore/eflore/xul
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-integration-v1.svndump --encoding=ISO-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/eflore/integration_v1
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-consultation-v1.svndump --encoding=ISO-8859-15 --exclude=livraison_bdnff_v3_v4 /home/jpm/Stockage/svn/cvs_eflore/eflore/consultation_v1
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore-consultation-v2.svndump --encoding=ISO-8859-15 --exclude=IMPORTATION_INITIALE_TB --exclude=livraison_bdnff_v3_v4 --exclude=IMPORT_INITIAL /home/jpm/Stockage/svn/cvs_eflore/eflore/consultation_v2
./cvs2svn --dumpfile=/home/jpm/Stockage/svn/eflore.svndump --encoding=ISO-8859-15 --exclude=IMPORTATION_INITIALE_TB --exclude=livraison_bdnff_v3_v4 --exclude=IMPORT_INITIAL --exclude=eflore_bdd_multiprojet_historique --exclude=eflore_v1-1 --exclude=eflore_v1_1_2 --exclude=Module_ZG_1_2 --exclude=Racine_Bdnff_v3_v4 --exclude=Racine_eflore_v1_1_1 --exclude=Racine_eflore_v1_2 --exclude=Racine_livraison_bdnbe_v1 --exclude=Racine_livraison_bdnff_v3_v4 --exclude=VERSION_07-X-2004 --exclude=VERSION_31-VIII-2004 --exclude=Bdnff_v3_v4 --exclude=eflore_v1_1_1 --exclude=eflore_v1_2 --exclude=livraison_bdnbe_v1 /home/jpm/Stockage/svn/cvs_eflore_test/eflore/
Nettoyage des problèmes d'encodage du dépôt CVS
Lancer l'utilitaire suivant pour vérifier que la chaine recherchée est présente :/opt/lampp/bin/php analyseur.php -t v -e /home/jpm/Stockage/svn/cvs/papyrus
Puis effectuer le remplacement des mots à problèmes à l'aide du fichier de correspondance :
/opt/lampp/bin/php analyseur.php -t rr -c /home/jpm/web/tela_conception/analyste_txt/correspondance.csv -e /home/jpm/Stockage/svn/cvs/papyrus