4
mai
2009
Utilisation des externals dans un projet SVN
mai
2009
Un article de hiko-seijuro
3 Commentaires
Bonjour,
l’astuce du jour consiste à utiliser les « externals » dans les projets SVN.
Un « external » est en fait une référence à un autre projet. Prenons un
exemple simple: vous développez une librairie que vous souhaitez
utiliser dans plusieurs projets. Vous avez alors 2 solutions
possibles:
- Intégrer directement les sources de votre librairie dans le projet
-
Créer un projet spécifique pour votre librairie et y faire
référence dans les différents projets.
La première solution possède les inconvénients suivants:
- Vous dupliquez l’information;
-
C’est à vous de propager les modifications des sources de la
librairie
Pour créer un external proprement, voici la démarche à suivre :
- Positionnez vous à la racine de votre projet
-
Executez la commande suivante :
svn propedit svn:externals .
-
Dans l’éditeur de texte, vous pouvez ajouter vos références en
respectant la syntaxe suivante :<rep_dest> <url_projet>
<rep_dest> <url_projet>
... - Sauvegardez, puis exécuter un update à la racine du projet. Votre référence doit apparaître. N’oubliez pas de commiter pour enregistrer les modifications
A la place de il vaut mieux préférer :
-rversion pour geler une version de l’external et ne pas être polué par des versions en cours d’élaboration
Je comprends très bien, je pense que le choix doit être pesé. Merci pour le commentaire qui complète mon billet.
Hello,
Le plus gros piège dans l’utilisation des externals qui fait que je ne les utilise pas finalement est que la copie locale obtenue est effectivement un mélange de plusieurs dépôts mais un mélange vivant, pas seulement au niveau des updates mais aussi des commits.
Si sur un projet, tu as besoin d’une petite évo que tu ne veux pas propager tout de suite dans ta librairie centralisée tu te retrouves piégé justement parcequ’en fait tu travailles toujours sur la librairie centralisé.
Sans parler des utilisateurs de la librairie qui ne seraient pas forcément au courant des subtilités des externals et qui peuvent se retrouver à commiter des modifs sur la librairie centralisée sans s’en rendre compte.
Perso, je trouve que ça fait trop de risque sur du code important puisqu’on veut le centraliser.