Apache Subversion (SVN)¶
Pré-requis¶
Installer subversion : http://subversion.apache.org/packages.html
L’arborescence¶
Voici l’arborescence standard d’un projet versionné sur un SVN :
/trunk/
/tags/
/branches/
- trunk/ : la version en cours de développement.
- tags/ : les différentes versions publiées. Les dossiers dans tags/ sont des copies du dossier trunk/ a un instant précis. Ils permettent de fixer une version pour la publier. Il est interdit d’effectuer une modification dans un de ces dossiers, la bonne méthode étant de faire la modification dans le trunk/ et de faire une nouvelle version dans le dossier tags/.
- branches/ : …
Les règles d’or¶
- Ne jamais commiter dans un tag.
- Ne jamais commiter sans message de commit.
- Ne jamais tagger une version qui contient des externals vers un “trunk”.
Les commandes basiques à connaître¶
Récupérer une copie locale :
svn co svn+ssh://nom-du-développeur@scm.adullact.net/openmairie/openmairie_exemple/trunk
openmairie_exemple
Mettre à jour sa copie locale :
svn up
Voir l’état de sa copie locale :
svn st
Voir la différence entre sa copie locale et le dépôt :
svn diff
svn ci
Externals¶
C’est une propriété sur le dépôt SVN permettant d’importer du code provenant d’un dépôt différent.
Le fichier EXTERNALS.txt :
#
# created by: svn propset svn:externals -F ./EXTERNALS.txt .
#
core svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/core/
spg svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/spg/
scr svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/scr/
lib svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/lib/
css svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/css/
js svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/js/
img svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/img/
pdf svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/pdf/
php svn://scm.adullact.net/svnroot/openmairie/openmairie_exemple/tags/4.2.0/php/
om-theme svn://scm.adullact.net/svnroot/openmairie/externals/om-theme/kinosura/tags/1.0.0
Appliquer les propriétés externals :
svn propset svn:externals -F ./EXTERNALS.txt .
svn up
svn ci
attention le repertoire ne doit pas etre existant (copie de travail verouillée)
Keywords¶
Les clients graphiques¶
Il est recommandé de savoir utiliser et d’utiliser subversion en ligne de commande mais il existe quelques clients graphiques qui permettent de réaliser certaines opérations d’une manière plus conviviale.
- Meld
- TortoiseSVN
- …
Tutoriaux¶
Importer un nouveau projet¶
Un nouveau projet est une nouvelle application qui se base sur la dernière version taggée d’openmairie_exemple. Ce tutorial contient certains pré-requis comme la création du projet sur la forge, le fait d’avoir un utilisateur avec les droits corrects sur le projet, le fait d’avoir consulter la dernière version taggée d’openmairie_exemple
On se positionne dans la dossier tmp pour récupérer la dernière version d’openmairie_exemple
cd /tmp
svn export --ignore-externals svn://scm.adullact.net/svnroot/openmairie/
openmairie_exemple/tags/<DERNIERE_VERSION_OPENMAIRIE_EXEMPLE>/ openexemple
On cré l’arborescence standard sur le dépôt
svn mkdir svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/scmrepos/svn/<NOUVEAU_PROJET>/trunk
svn mkdir svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/scmrepos/svn/<NOUVEAU_PROJET>/tags
svn mkdir svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/scmrepos/svn/<NOUVEAU_PROJET>/branches
On se positionne dans le dossier précédemment importé pour importer sur le dépôt son contenu
cd openexemple
svn import . svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/svnroot/<NOUVEAU_PROJET>/trunk
On se positionne dans son dossier de développement pour créer la copie locale du projet
cd ~/public_html/
svn co svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/scmrepos/svn/<NOUVEAU_PROJET>/trunk
<NOUVEAU_PROJET>
On se positionne dans le dossier php de l’application pour appliquer les externals
cd <NOUVEAU_PROJET>/php
svn propset svn:externals -F ./EXTERNALS.txt .
svn up
svn ci
Publier une nouvelle version¶
Ce tutorial contient certains pré-requis comme le fait d’avoir un utilisateur avec les droits corrects sur le projet ou connaître comment incrémenter le numéro de version de l’application à publier.
Avant de publier une application, il faut vérifier que l’EXTERNALS de la librairie openMairie ne pointe pas vers le “trunk”. Pour cela
less php/EXTERNALS.txt
#
# created by: svn propset svn:externals -F ./EXTERNALS.txt .
#
openmairie svn://scm.adullact.net/svnroot/openmairie/openmairie/trunk/
fpdf svn://scm.adullact.net/svnroot/openmairie/externals/fpdf/tags/1.6-min/
pear http://svn.php.net/repository/pear/pear-core/tags/PEAR-1.9.1/
db http://svn.php.net/repository/pear/packages/DB/tags/RELEASE_1_7_13/
Ici on voit que openmairie pointe vers le “trunk”. Nous devons d’abord publier la librairie
svn cp svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/openmairie/openmairie/trunk
svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/openmairie/openmairie/tags/<NOUVELLE_VERSION>
Le message pourra être : Tag openmairie <NOUVELLE_VERSION>.
Ensuite il faut changer les EXTERNALS.txt. On remplace dans le fichier php/EXTERNALS.txt, le trunk par la nouvelle version
vim php/EXTERNALS.txt
#
# created by: svn propset svn:externals -F ./EXTERNALS.txt .
#
openmairie svn://scm.adullact.net/svnroot/openmairie/openmairie/tags/<NOUVELLE_VERSION>/
fpdf svn://scm.adullact.net/svnroot/openmairie/externals/fpdf/tags/1.6-min/
pear http://svn.php.net/repository/pear/pear-core/tags/PEAR-1.9.1/
db http://svn.php.net/repository/pear/packages/DB/tags/RELEASE_1_7_13/
Ensuite on applique le nouveau propset externals une fois placé dans le dossier php (Attention de ne pas oublier le « . » dans la commande svn propset)
cd php/
svn propset svn:externals -F ./EXTERNALS.txt .
svn up
Ici en faisant un svn info sur le dossier openmairie, nous devons obtenir une URL comme ceci
svn info openmairie/
URL : svn://scm.adullact.net/svnroot/openmairie/openmairie/tags/<NOUVELLE_VERSION>
Si tout est ok nous pouvons valider nos modifications puis passer à la publication de l’application
svn ci
Ici on fait une copie du “trunk” vers le dossier “tags” de l’application openmairie_exemple
svn cp svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/openmairie/openmairie_exemple/trunk
svn+ssh://<NOM_DU_DEVELOPPEUR>@scm.adullact.net/openmairie/openmairie_exemple/tags/<NOUVELLE_VERSION>