2011-06-04 2 views
3

Je travaille sur un projet qui utilise plusieurs grandes bibliothèques tierces telles que boost, tbb et ACE. Je voudrais contrôler exactement quelles versions de ces bibliothèques tierces sont utilisées dans mon projet plutôt que de compter sur ce qui est disponible dans la machine de construction. J'ai déjà fait ce genre de chose en ajoutant ces bibliothèques dans mon dépôt de projets. Cela fonctionne très bien, mais cela ralentit le travail, le forçant à suivre quelques fichiers de plus que ce que mon projet contient. Y a-t-il un meilleur moyen de gérer les dépendances externes?Gestion de grandes dépendances externes à l'aide de mercurial

Merci à l'avance

Répondre

1

Pour les grandes binaires dépendances, je recommanderais externalisant ceux dans un dépôt d'artefacts, en dehors de toute VCS (en particulier un distribué VCS où vous le clonage dépôt autour énorme en raison des versions binaires).

Java a Nexus, C++/C# peut publish an artifact dans un NuGet repo.
Il serait préférable d'essayer de tout stocker dans un repo DVCS (Mercurial ou Git).

+0

Je pensais à ça mais ça devient salissant quand vous avez plusieurs branches. Vous ne voulez pas forcément mettre à jour vos dépendances externes dans toutes les branches en même temps (branche de dev dev/qa de thik) – Samwise

+0

@Samwise: vous n'avez pas besoin de mettre à jour * toutes * branches pour gérer les dépendances externes: votre fichier de configuration (le équivalent du fichier pom.xml) peut avoir un contenu différent (c'est-à-dire des numéros de version différents pour les dépendances qu'il déclare) par branche. – VonC

2

Si vous pouvez trouver Mercurial, git ou svn repos pour ces bibliothèques, vous pouvez les rendre subrepositories de votre projet. Les sous-récapitulatifs ne pointent pas vers un repo en général, mais plutôt vers une version spécifique d'un repo spécifique, de sorte qu'il répond à votre objectif là-dessus.

Questions connexes