My only experience of version control systems is clearcase and, while it's served its purpose well, I would now like to move to a free tool. I've read about and experimented with Git & SVN and certainly see the advantages in the commit based approach as opposed to the file based approach that clearcase uses.
However, there are parts of Clearcase that I would miss if there is no equivalent in the other tools. Clearcase could distinguish between files that were written by the user and files that were created from programs the user had written. User written files would be 'File Element Versions' and program generated files would be 'Derived Object Versions'. Furthermore the dependencies of a 'Derived Object Version' could be determined from using the clearcase cleartool catcr
command.
My question is: are there equivalents to these files types in git and is there an equivalent of the cleartool catcr
command? I agree this isn't strictly part of a version control system, but it still something that I would like to replicate if I moved to GIT.
The
cleartool catcr
is there to use metadata (the configuration record orCRs
) attached to derived objects (the.o
files), themselves generated byclearmake
.This was used for huge set of C files in order to speed up the compilation and avoid rebuilding everything.
SVN and Git are more focused on the version control part and will not provided a similar mechanism.
Plus, nowadays, either the compilation itself is quicker anyway (because of an increase in memory and CPU and disk speed), or the programs are developed in other languages which offer a better compilation experience (or are scripted)
To me, the sweetest part of working with derived objects is having the complete dependency list from
cleartool catcr <flags/options> DO_name
and NOT really having a faster compilation process.The closest thing to achieve that without
clearmake
is probably making use ofgcc -MM
. Still, nothing compares to the output ofcleartool catcr
.