How to manage versions of a software in a CVS with lots of libraries
We are developing a large software project which consists of a large number of projects, components and libraries. Our management has decided that for every deployment a snapshot of the entire system has to be saved so when a problem arises we can easily have the exact version of the entire system. The usual solution would be to branch the project after each deployment. And by the way, we are using VS2008
, C#
and SVN
. But this is not practical beacase of the large number of sub-projects and libraries which also have their versions and are modified.
One answer to this problem is to have backwards compatibility and always fix problems on the trunk version, but in our case it would not be possible to test the changes of the system ( the software is an ITS system and once a system is deployed we can't do any more intergration testing).
And to make matters worse, out deploments are modular, 开发者_运维问答so each time a different combinations of components is deployes and there is also the localization.
How are you resolving these kinds of problems? Are there any tools that can help?
You could use a dependency management system like ivy - this essentially keeps a record of every version of every dll you are using.
As a (very) brief overview, when you do a build (using nant, for example), you can hook in ivy to resolve all of the dependencies, getting the specific versions of dlls that you need. As the ivy config will be in svn, if you get out an older revision of your code, you also get out an older version of the ivy config.
I used to work on such project.
We used to branch each release candidates and report bugfixes applied to the RC branch onto the trunk. That was not really handy, but we could not find a decent alternative until we decided to split the projet into a lot of small and cute projects managed by a maven-like system.
Maybe using some continuous integration management tool associated to strong testing routines could help, too.
精彩评论