2009-01-26 10 views
3

Est-il possible d'ignorer les dépendances externes pour une balise référencée dans une propriété svn: externals? Cela peut sembler une question très étrange, mais laissez-moi vous expliquer ...Est-ce que svn: externals peut être utilisé en ignorant les externes pour cette URL?

J'ai une assez grande collection de modules de code individuels et «enfichables», chacun pouvant être testé, compilé et développé de manière autonome projet. Certains de ces modules dépendent d'autres modules, via la propriété svn: externals. Le problème est que notre framework de test, gtest, est également une dépendance de chaque module et inclut une bibliothèque statique pour les suites de tests, ce qui signifie que chaque module est au moins ~ 15Mb, puisque nous avons construit ces bibliothèques statiques pour plusieurs plateformes. Dans tous les cas, cela signifie qu'un projet relativement simple peut prendre jusqu'à 200 Mo d'espace disque lors de son extraction, et cela grâce à des copies dupliquées de gtest de chaque module. Certains de mes collègues commencent maintenant à se plaindre de la taille excessive des copies de travail, et il serait bon de réduire cela en incluant simplement la dépendance gtest au niveau supérieur de chaque module et en incluant seulement cette copie dans la construction .

Fondamentalement, je veux un moyen de définir svn: externals dans ma proplist, mais vérifiez chacune de ces dépendances comme si je devais passer "--ignore-externals" à svn co. Est-ce possible? Je n'ai pas le sentiment, mais ça vaut le coup de demander ...

Répondre

2

Je recommande de regarder les caisses clairsemées. Checkout juste le répertoire supérieur (avec l'option 'seulement cet élément'), obtenir les externes. Ensuite, pour chaque module que vous voulez, vous pouvez mettre à jour le WC avec le répertoire désiré, mais en omettant les externes pour cela. Répétez pour tous les sous-projets.

vous devrez peut-être mettre la dépendance gtest sur un autre dossier dans votre repo, mais je pense que cela pourrait fonctionner pour vous.

0

Je ne connais aucun moyen de faire sauter svn une seule dépendance.

Mais je pense que vous pouvez résoudre cela d'une autre manière en faisant des versions étiquetées de ces modules sans la dépendance partagée. Les autres modules dépendants peuvent alors pointer leur svn: externals vers ces tags plutôt que vers les branches de compilation indépendantes.

Je ne fais que suggérer cela car il semble que vous ayez un problème très spécifique avec une seule grande bibliothèque partagée. Quelque chose de plus compliqué et vous ne pourrez probablement pas résoudre cela avec svn: externals seul.

+0

Comment créer une version balisée sans les dépendances? –

0

Subversion à partir de la version 1.6.0+ peut utiliser svn: externals référençant un file plutôt qu'un répertoire. Cela peut aider?

Questions connexes