[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: Request for comments on our vendor library structure

From: Bob Archer <Bob.Archer_at_amsi.com>
Date: Tue, 8 Feb 2011 09:34:54 -0500

> We are developing a fairly large application that uses open source
> libraries. We have one svn repo per application. Currently, the
> open source libraries are all stored with the application. This is
> a bad idea because the working copy and repo are now very large.
> Also, every branch gets a copy of all the open source code.
>
> So I propose to move the open source libraries into a separate
> repository. We can then reference that code either using externals
> or, more likely, environment variables in the build files. I prefer
> the latter because then the open source code will never appear in
> the project's working copy and we can easily exclude it from
> branches if it is not required.
>
> So how should I structure the open source (vendor) library repo? I
> was thinking of the following:
>
> OpenSourceLibs
> |
> |---- Boost
> | |---- tags
> | |---- trunk
> |
> |---- wxWidgets
> | |---- tags
> | |---- trunk
> etc.
>
> That way, I can tag each library individually.
>
> We then check out OpenSourceLibs beside the application's working
> copy, and specify in the makefiles which libraries to use by
> referencing the tags.
>
> My concern is that each developer must correctly checkout and
> maintain his/her OpenSourceLibs working copy. It would be best to
> do this as a sparse working copy so they only get what is needed,
> but that is not easy for the developer to do as I have a repo of
> projects of tags i.e. several layers for him to manage. Or they
> could just checkout and update the entire OpenSourceLibs folder,
> but that would be very large.
>
> Would anyone like to suggest how best to handle this please?
>

Many people like to make their projects atomic. That is, when you check out the project folder you have everything you need to build it, including build tools and compilers. Some scale that back and require that the compilers be on the machine... some ever further requiring that the compilers and build tools be on the machine. You want to go one step further and require that common libs/code be on the machine.

There is really no right or wrong way... it is just what works best for you. Personally, hard drive space is cheap. I would rather have all the dependencies for each project in my working copy. Sure, store it once in the repository and use externals in your projects.

Once again, this is all preference, and I just gave you mine. Only you can decide what is right for you.

BOb
Received on 2011-02-08 15:35:35 CET

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.