[cvsnt] Branches for multiple applications using common modules

Dieter Rapp dieter.rapp at de.opel.com
Tue Apr 5 14:53:37 BST 2005


Hello,

I'm using CVS-NT to archive a set of related applications. Although each 
application has got its own pool of source files, there are many files 
used commonly. Hence, I put the common source files into an own module 
while keeping the other files together in application specific modules. 

Introducing alias modules, I'm able to combine the files from the common 
module with the files from the application specific modules. That's 
working pretty fine. However, I'm now running into the situation that when 
developing a certain application I had to change common files. These 
modifications, however lead to inconsistencies with the other applications 
to that those could no longer compile with the head of the common files. 
To solve that problem I introduced application specific branches like e.g. 
"B-Application1", "B-Application2", etc. With that approach I'm able to go 
ahead change common files for Application1 while still allowing 
Application2 and all others to use the old files. However, the drawback of 
that solution is that revision differences in the archives are stored 
multiple times.

Example:
Application1 causes a modification to CommonFile1.h 
-> The archive CommonFile1.h,v stores the differences caused by 
Application1
After I while, I'm going to use the newest set of common files for the 
remaining applicatios, too. Hence, I have to merge them into the various 
branches. Using the new common file may cause inconsistencies and I need 
to adapt the application's files to compile again before I can commit 
everything. 
When committing CommonFile1.h to "B-Application2", CVS detects 
modifications which actually have been caused by Application1 a while ago.
-> The archive CommonFile1.h,v now contains the differences caused by 
Application1 a second time
When committing CommonFile1.h to "B-Application3", CVS again detects the 
same modifications.
-> The archive CommonFile1.h,v now contains the differences caused by 
Application1 a third time
....

Although CVS still works, it was not my intention to "split" source files 
in a lot of branches which in most cases have identical heads. 
Is there a way to check out a consistent set of files from several modules 
which are not the head? I know that tags can be used to keep consistent 
files together. But checking out a tag leads to a sticky project (a 
problem branches don't have). 

Thanks for comments.

Best regards,
Dieter Rapp


More information about the cvsnt mailing list