| 1 |
<?xml version="1.0" encoding="iso-8859-1"?> |
|---|
| 2 |
<!-- $Revision$ --> |
|---|
| 3 |
|
|---|
| 4 |
<chapter id="admin.svn"> |
|---|
| 5 |
<title>Subversion, utilisation côté développeur</title> |
|---|
| 6 |
|
|---|
| 7 |
<para> |
|---|
| 8 |
Subversion, aussi appellé SVN, est un logiciel permettant de travailler à plusieurs sur des sources communs. |
|---|
| 9 |
</para> |
|---|
| 10 |
<para> |
|---|
| 11 |
Il permet de transférer un ensemble de fichiers depuis un serveur, d'y effectuer des modifications localement, puis de valider ces modifications. SVN gère les conflits si 2 personnes modifient le même fichier, il permet aussi de retrouver chaque modification faites sur les sources dans le temps, sous forme de fichier "diff" (lignes ajoutées, modifiées et supprimées sur chaque fichier) et permet de revenir sur l'une d'elle pour corriger d'éventuelles erreurs. |
|---|
| 12 |
</para> |
|---|
| 13 |
<para> |
|---|
| 14 |
SVN est un descendant du logiciel CVS, autre système, plus ancien, de gestion de sources en commun. Il existe d'autres systèmes comme DARCS ou ARCH/TLA qui effectuent le même genre de tâche : la gestion concurrente de sources et le partage de documents en commun. |
|---|
| 15 |
</para> |
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
<sect1><title>Concepts de base de subversion</title> |
|---|
| 21 |
|
|---|
| 22 |
<para> |
|---|
| 23 |
Lorsque l'on utilise subversion sur son ordinateur, on travaille sur son ordinateur localement, sur une copie des sources. Les sources sont situés sur un serveur subversion, dans ce que l'on appelle un dépôt. Un administrateur de dépot vous fournit généralement l'adresse du dépot. Cette adresse, appellée URL, peut prendre plusieurs formes comme suit : |
|---|
| 24 |
<example><title>Exemple d'url de dépot SVN</title> |
|---|
| 25 |
<para> |
|---|
| 26 |
<screen>svn://svn.example.com/monprojet/trunk |
|---|
| 27 |
svn+ssh://svn.debian.org/var/lib/svn/debian-edu/trunk |
|---|
| 28 |
http://corp.mycompany.com:8080/svn/internal/ |
|---|
| 29 |
https://dev.alternc.org/svn/alternc/alternc/trunk |
|---|
| 30 |
</screen> |
|---|
| 31 |
Ce ne sont, bien sur, que des exemples. Subversion supportant de nombreux protocoles de transfert d'information, il est possible que d'autres forme d'url existent. |
|---|
| 32 |
</para> |
|---|
| 33 |
</example> |
|---|
| 34 |
Si votre administrateur de dépôt vous a fourni un nom d'utilisateur et un mot de passe, il se peut que vous ayez besoin d'ajouter le nom d'utilisateur à cette url. Il se place dans ce cas juste après le <code>://</code> et avant le nom de domaine. On fait suivre le nom d'utilisateur d'un <code>@</code>, à la manière des emails. L'url devient alors : |
|---|
| 35 |
<screen>svn+ssh://john@svn.debian.org/var/lib/svn/debian-edu/trunk/</screen> |
|---|
| 36 |
</para> |
|---|
| 37 |
|
|---|
| 38 |
<note><title>A propos des commandes de ce chapitre</title> |
|---|
| 39 |
<para> |
|---|
| 40 |
Dans la suite de ce manuel, nous présenterons des commandes de subversion. Ces commandes sont accessibles via l'outil en ligne de commande <command>svn</command> ou via un menu permettant de lancer cette commande, selon le logiciel que vous utilisez. Les exemples de commandes de cette documentation seront données sous forme de commande pour le logiciel SVN en console, à vous de trouver l'équivalent dans votre logiciel, les termes utilisés étant généralement les mêmes. |
|---|
| 41 |
</para> |
|---|
| 42 |
</note> |
|---|
| 43 |
|
|---|
| 44 |
<sect2><title>Récupérer les fichiers sources dans leur état actuel</title> |
|---|
| 45 |
<para> |
|---|
| 46 |
La première commande subversion à connaître est celle permettant d'obtenir une copie locale (sur votre machine) des sources distants (fichiers situés dans le dépôt distant). Pour cela, on utilise la commande <command>checkout</command>, parfois abbréviée <command>co</command>. On l'utilise comme suit : <command>svn checkout <url du dépôt></command> |
|---|
| 47 |
Par exemple : |
|---|
| 48 |
</para> |
|---|
| 49 |
<example><title>Exemples d'obtention d'une copie d'un dépôt</title> |
|---|
| 50 |
<para> |
|---|
| 51 |
<screen> |
|---|
| 52 |
$ svn checkout svn://svn.example.com/monprojet/trunk |
|---|
| 53 |
$ svn co svn+ssh://philippe@svn.debian.org/var/lib/svn/debian-edu/trunk |
|---|
| 54 |
</screen> |
|---|
| 55 |
</para> |
|---|
| 56 |
</example> |
|---|
| 57 |
|
|---|
| 58 |
<para> |
|---|
| 59 |
La commande svn peut vous demander un mot de passe si vous utilisez un compte disposant de droits étendus. Dans ce cas, saisissez votre mot de passe lorsque le système vous le demande. |
|---|
| 60 |
</para> |
|---|
| 61 |
<para> |
|---|
| 62 |
Vous devez voir alors la liste des fichiers téléchargés sur votre machine au fur et à mesure de leur arrivée, comme suit : |
|---|
| 63 |
<screen> |
|---|
| 64 |
$ svn checkout svn://svn.debian.org/svn/debian-edu/trunk |
|---|
| 65 |
A trunk/html |
|---|
| 66 |
A trunk/html/logs |
|---|
| 67 |
A trunk/html/logs/cd-build.log |
|---|
| 68 |
A trunk/html/logs/overview.log |
|---|
| 69 |
A trunk/html/logs/securitylist.html |
|---|
| 70 |
A trunk/html/logs/buglist.html |
|---|
| 71 |
A trunk/html/logs/README |
|---|
| 72 |
A trunk/html/index.html |
|---|
| 73 |
A trunk/security |
|---|
| 74 |
A trunk/security/README |
|---|
| 75 |
A trunk/src |
|---|
| 76 |
... |
|---|
| 77 |
</screen> |
|---|
| 78 |
</para> |
|---|
| 79 |
<para> |
|---|
| 80 |
Une fois téléchargés, vous disposez des fichiers dans un nouveau dossier local, et vous pouvez les lire, les modifier localement, bref, faire ce que vous voulez dessus. Vous noterez dans chaque dossier de ces sources la présence d'un dossier <code>.svn</code>, généralement caché. Ce dossier permet à Subversion de s'y retrouver et de savoir quels fichiers ou dossier vous avez modifié. |
|---|
| 81 |
</para> |
|---|
| 82 |
</sect2> |
|---|
| 83 |
|
|---|
| 84 |
<sect2><title>Mettre à jour son dépôt local</title> |
|---|
| 85 |
<para> |
|---|
| 86 |
Quelques temps après avoir utilisé checkout pour aller récupérer les sources, l'on peut souhaiter mettre à jour cette copie locale, pour y récupérer les modifications effectuées par les autres développeurs. Pour cela, on utilise tout simplement la commande <command>update</command>. Pour lancer cette commande, il faut bien évidemment être situé dans la copie locale. En voici un exemple : |
|---|
| 87 |
</para> |
|---|
| 88 |
<example><title>Exemple de mise à jour d'une copie locale</title> |
|---|
| 89 |
<para> |
|---|
| 90 |
<screen> |
|---|
| 91 |
trunk$ svn update |
|---|
| 92 |
U trunk/html/logs/overview.log |
|---|
| 93 |
U trunk/html/logs/buglist.html |
|---|
| 94 |
M trunk/html/logs/README |
|---|
| 95 |
... |
|---|
| 96 |
</screen> |
|---|
| 97 |
Vous remarquerez le détail des informations fournies par svn : les lignes avec U montrent les fichiers mis à jour, celles avec M montrent les fichiers que vous avez modifié (M) et qui n'ont donc pas été mis à jour si besoin. |
|---|
| 98 |
</para> |
|---|
| 99 |
</example> |
|---|
| 100 |
</sect2> |
|---|
| 101 |
|
|---|
| 102 |
<sect2><title>Valider ses modifications sur le dépôt</title> |
|---|
| 103 |
<para> |
|---|
| 104 |
Si vous effectuez des modifications dans les fichiers de votre copie locale, vous devez ensuite valider ses modifications en renvoyant les fichiers ainsi modifiés sur le serveur, au dépôt. Subversion suivant les modifications en détail, il est nécessaire d'accompagner cet envoi d'un petit commentaire expliquant de quoi il s'agit. |
|---|
| 105 |
</para> |
|---|
| 106 |
<para> |
|---|
| 107 |
Pour envoyer les modifications sur le dépôt, on utilise la commande <command>svn commit</command> qui regarde la liste des fichiers modifiés et les renvois au dépôt. Cette commande lance votre éditeur pour vous demander de remplir le commentaire associé à vos modifications. On peut l'accompagner de la liste des fichiers à modifier, si l'on souhaite ne valider que certains d'entre eux. |
|---|
| 108 |
</para> |
|---|
| 109 |
</sect2> |
|---|
| 110 |
|
|---|
| 111 |
<sect2><title>Ajouter ou supprimer des fichiers au dépôt</title> |
|---|
| 112 |
<para> |
|---|
| 113 |
Lorsque l'on crée de nouveaux fichiers ou dossiers dans les sources, il faut signaler à subversion que ces fichiers doivent être ajoutés au dépôt. Pour cela, on utilise la commande <command>svn add</command>. On précise derrière cette commande la liste des fichiers ou dossiers à ajouter au dépôt. |
|---|
| 114 |
</para> |
|---|
| 115 |
</sect2> |
|---|
| 116 |
|
|---|
| 117 |
</sect1> |
|---|
| 118 |
|
|---|
| 119 |
|
|---|
| 120 |
|
|---|
| 121 |
|
|---|
| 122 |
<sect1><title>Utilisation de SVN sur votre système d'exploitation</title> |
|---|
| 123 |
|
|---|
| 124 |
<para> |
|---|
| 125 |
Ce chapitre présente l'utilisation de SVN sur les systèmes d'exploitation suivants : Windows (98SE, 2000, XP) et Linux (en console et sous environnement Kde ou Gnome). Il propose l'installation de logiciels de gestions de sources utilisant le protocole SVN et explique les paramètres de base. |
|---|
| 126 |
</para> |
|---|
| 127 |
|
|---|
| 128 |
|
|---|
| 129 |
<sect2><title>Installation de SVN sous Windows</title> |
|---|
| 130 |
<para> |
|---|
| 131 |
Sous Windows, vous pouvez utiliser le logiciel tortoiseSvn disposnible sur le site <ulink url=""></ulink>. Il s'agit d'une extension à l'explorateur windows qui permet d'accéder facilement aux fichiers d'un dépôt subversion, et de gérer les fichiers correspondants. Les icônes des fichiers reflettent leur état dans le svn (à jour, modifié, non présent dans le dépôt ...) |
|---|
| 132 |
<graphic fileref="images/tortoise_svn_1.jpg" format="JPG"></graphic> |
|---|
| 133 |
</para> |
|---|
| 134 |
</sect2> |
|---|
| 135 |
|
|---|
| 136 |
<sect2><title>Installation de SVN sous Linux</title> |
|---|
| 137 |
<para> |
|---|
| 138 |
Sous Linux, vous pouvez utiliser de nombreux logiciels pour vous connecter à un serveur Subversion. Le plus classique est SVN lui-même. Il existe cependant 2 clients habituels qui sont esvn et rapidsvn. |
|---|
| 139 |
</para> |
|---|
| 140 |
<sect3><title>Svn en ligne de commande</title> |
|---|
| 141 |
<para> |
|---|
| 142 |
Sous Debian GNU/Linux, on installe subversion avec la commande <command>apt-get install subversion</command>. Sous mandrake, on utilise <command>urpmi subversion</command>. Si vous utilisez une autre distribution, utilisez la méthode d'installation habituelle d'un logiciel pour installer subversion. |
|---|
| 143 |
</para><para> |
|---|
| 144 |
Une fois installé, on ne dispose que de la ligne de commande de svn, qui s'exprime sous la forme suivante : <command>svn <commande> <parametres></command> |
|---|
| 145 |
</para><para> |
|---|
| 146 |
Les commandes classiques de svn se retrouvent donc directement depuis la ligne de commande. En voici quelques exemples : |
|---|
| 147 |
</para> |
|---|
| 148 |
<example><title>Exemple de commande SVN</title> |
|---|
| 149 |
<para> |
|---|
| 150 |
Pour aller chercher la version actuelle des sources d'un dépot distant, nous utilisons, par exemple : |
|---|
| 151 |
<screen>svn checkout svn://svn.example.com/monprojet/trunk</screen> |
|---|
| 152 |
Pour ajouter un fichier nouvellement inséré dans les sources, nous appelons : |
|---|
| 153 |
<screen>svn add monimage.gif monsource.php</screen> |
|---|
| 154 |
Pour supprimer un fichier des sources, on utilise : |
|---|
| 155 |
<screen>svn remove vieuxtruc.php</screen> |
|---|
| 156 |
Pour valider ses modifications dans les sources, on tape : |
|---|
| 157 |
<screen>svn commit</screen> |
|---|
| 158 |
Le logiciel nous demande alors le commentaire associé à ce jeu de modifications. On peut aussi préciser les fichiers que l'on veut valider, si l'on ne veut pas valider toutes ses modifications d'un seul coup. |
|---|
| 159 |
Enfin, si l'on veut mettre à jour sa copie locale, on utilisera : |
|---|
| 160 |
<screen>svn update</screen> |
|---|
| 161 |
</para> |
|---|
| 162 |
</example> |
|---|
| 163 |
<para> |
|---|
| 164 |
SVN en ligne de commande est donc un outil relativement simple pour gérer directement sa copie locale depuis une console Linux. |
|---|
| 165 |
</para> |
|---|
| 166 |
</sect3> |
|---|
| 167 |
|
|---|
| 168 |
|
|---|
| 169 |
|
|---|
| 170 |
<sect3><title>Esvn, client graphique sous KDE</title> |
|---|
| 171 |
<para> |
|---|
| 172 |
Si vous utilisez KDE, vous pouvez installer esvn, un client subversion graphique, pour gérer votre dépôt local. Sous Debian GNU/Linux, on installe esvn avec la commande <command>apt-get install esvn</command>. Sous Mandrake, on utilise <command>urpmi esvn</command>. Si vous utilisez une autre distribution, utilisez la méthode d'installation habituelle d'un logiciel pour installer esvn. |
|---|
| 173 |
</para><para> |
|---|
| 174 |
Une fois installé et lancé, vous tombez sur la fenêtre ci-dessous. Cliquez sur <command>file</command> puis <command>checkout</command> pour aller récupérer une copie locale des fichier du dépôt distant. |
|---|
| 175 |
<graphic fileref="images/esvn_1.jpg" format="JPG"></graphic> |
|---|
| 176 |
</para><para> |
|---|
| 177 |
Les commandes classiques de subversion se retrouvent ensuite dans les menus de ce logiciel : |
|---|
| 178 |
<graphic fileref="images/esvn_2.jpg" format="JPG"></graphic> |
|---|
| 179 |
<graphic fileref="images/esvn_3.jpg" format="JPG"></graphic> |
|---|
| 180 |
<graphic fileref="images/esvn_4.jpg" format="JPG"></graphic> |
|---|
| 181 |
</para> |
|---|
| 182 |
</sect3> |
|---|
| 183 |
|
|---|
| 184 |
|
|---|
| 185 |
<sect3><title>Rapidsvn, client graphique sous Gnome</title> |
|---|
| 186 |
<para> |
|---|
| 187 |
Si vous utilisez Gnome, vous pouvez installer rapidsvn, un client subversion graphique, pour gérer votre dépôt local. Sous Debian GNU/Linux, on installe esvn avec la commande <command>apt-get install rapidsvn</command>. Sous Mandrake, on utilise <command>urpmi rapidsvn</command>. Si vous utilisez une autre distribution, utilisez la méthode d'installation habituelle d'un logiciel pour installer esvn. |
|---|
| 188 |
</para><para> |
|---|
| 189 |
Une fois installé et lancé, vous tombez sur la fenêtre ci-dessous. Cliquez sur <command>repository</command> puis <command>checkout</command> pour aller récupérer une copie locale des fichier du dépôt distant. |
|---|
| 190 |
<graphic fileref="images/rapidsvn_1.jpg" format="JPG"></graphic> |
|---|
| 191 |
Remplissez ensuite les paramètres demandés et cliquez sur OK pour aller récupérer les fichiers source. |
|---|
| 192 |
<graphic fileref="images/rapidsvn_2.jpg" format="JPG"></graphic> |
|---|
| 193 |
</para><para> |
|---|
| 194 |
Les commandes classiques de subversion se retrouvent ensuite dans les menus de ce logiciel : |
|---|
| 195 |
<graphic fileref="images/rapidsvn_3.jpg" format="JPG"></graphic> |
|---|
| 196 |
<graphic fileref="images/rapidsvn_4.jpg" format="JPG"></graphic> |
|---|
| 197 |
</para> |
|---|
| 198 |
</sect3> |
|---|
| 199 |
|
|---|
| 200 |
</sect2> |
|---|
| 201 |
</sect1> |
|---|
| 202 |
|
|---|
| 203 |
</chapter> |
|---|