tags:

views:

146

answers:

1

I have an existing Mercurial repository for a C++ application in a small corporate environment. I asked a co-worker to add the setup script to the repository and he added all of the dependency binaries, PDFs, and executable to the repository under an Install directory. I dislike having the binaries and dependencies in the same repository, but I'd like recommendations on best practices. Here are the options I am considering:

  1. Create a separate repository for the Installer and related files
  2. Create a subrepository for the Installer and related files
  3. Use a (yet to be identified) build dependency manager

I am concerned with using a subrepository with Mercurial based on what I've read so far and the (apparently) incomplete implementation. I would like to get a project dependency system, e.g. Ivy, but I don't know all of the options and haven't had time yet to try out any options.

I thought I'd use TortoiseHg as a basis, and it does not have the TortoiseHg binaries in the repository although it does have some binaries such as kdiff3.exe. Instead it uses setup.py to clone multiple repositories and build the apps. This seems reasonable for OSS, but not so much for corporate environments.

Recommendations?

+1  A: 

I've had great luck using a good dependency manager, but it's more useful for code modules than artifacts. A sub-repo certainly works, but you'll not be cutting the clone time of people pulling the top tree since it will cascade into the subrepo too.

Someone will probably suggest using bfiles or big files, but I'd avoid it. They work well enough, but that functionality looks like it's going into mercurial this summer natively at which time those will languish.

Were I you I'd (a) hit the co-worker (b) try to strip those added files (using strip or convert), (c) re-do it will the installers being built not stored.

The PDFs I'd probably store, but there are some neat tricks for generating docs if you're interested.

Ry4an
Fortunately I was able to `hg backout` and drop the changeset and I created a separate repository for the installer that was not a sub-repository for the time being. Can you suggest a dependency manager? I may be better off adjusting the CI Build system - I have to support MS embedded C++ 4.0, Borland C++ Builder 5, Visual Studio 2008, etc. -- a variety of compilers. I think my best bet is to setup the build system to publish artifacts and installers, but I haven't the time at the moment. Hopefully I will soon.
Ryan
In Java land I use and highly recommend ivy plus Hudson, but it looks like ivy.net never made it off the ground, so I'm afraid I'm no help on tools recommendations.
Ry4an