Subversion: Créer des liens !

Posted by ZedTuX 0n R00t on January 12, 2014

GNOME CCMime

Gné ??

L’idée, ici, est de créer un lien d’un dossier du repository, ou d’un autre repository au dossier courant.

Par exemple, j’ai un dossier utils/ qui contient divers outils réutilisable n’importe où (ranger dans un dossier trunk bien entendu ;) ), que je veux lier à mon projetA/.

Donc, je veux que lorsque je face un checkout de /projetA/ que le dossier /utils/ soit aussi pris et donc je veux en locale /projetA/utils/.

L’avantage, c’est que, si je modifie mon fichier /utils/logging.h, la modification sera automatiquement répandue partout !

Subversion Propset

Pour créer un tel lien, il vous faut d’abord comprendre comment ca fonctionne ! :)

Tout ce fait avec la commande svn propset.

Cette commande va écrire dans les dossiers, des svn properties.

Par exemple, un merge ajoutera un svn:mergeinfo dans le dossier où à été effectué le merge.

Pour créer notre lien, ce qui va nous intéresser, c’est svn:externals.

Attention: Dans les version inférieur à Subversion 1.6, vous ne pourrez lier qu’un dossier. Ce n’est qu’a partir de la version 1.6 que vous pouvez lier un fichier.

Créer un lien

Aller, c’est partis !

Reprenons notre exemple.

Je veux donc que, le contenu du dossier /utils/trunk/ soit lié dans un dossier /projetA/trunk/utils/.

Bon, déjà, il faut faire un checkout du projet !

1
2
svn co http://svn.mydomain.org/projetA/ projetA/
cd projetA/

Maintenant, nous sommes dans le dossier projetA/ qui contient branches/, tags/ et trunk/.

Nous, on va ajouter une svn propertie au dossier trunk/.

1
svn propset svn:externals “utils http://svn.mydomain.org/utils/trunk/” ./trunk/

Et voila !

Un svn update va créer le dossier utils/ avec le contenu stocké dans http://svn.mydomain.org/utils/trunk/ !

Si tout ca est bon, il ne reste plus qu’a commiter ! ;)