Reputation: 31
I am working on a project which makes use of several large 3rd party libraries such as boost, tbb and ACE. I would like to control exactly which versions of these 3rd party libraries are used in my project rather than rely on whatever is available in the build machine. I have done this sort of thing in the past by adding these libraries to my projects repository. This works fine but it does slow mercurial down forcing it to track a couple orders of magnitude more files than what my project contains. Is there a better to way to manage external dependencies?
Thanks in advance
Upvotes: 3
Views: 398
Reputation: 78330
If you can find Mercurial, git, or svn repos for those libraries, you can make them subrepositories of your project. Subrepos don't point to a repo in general, but rather point to a specific version of a specfiic repo, so it meets your goal on that.
Upvotes: 2
Reputation: 1324128
For large binary dependencies, I would recommend externalizing those in an artifact repository, outside of any VCS (especially a distributed VCS where you are cloning around huge repository because of versioned binaries).
Java has Nexus, C++/C# can publish an artifact in a NuGet repo.
That would be preferable that trying to store everything in a DVCS repo (Mercurial or Git).
Upvotes: 1