[DUG] CVS Software - Suggestions?
Max Nilson
max at accredo.co.nz
Fri Nov 24 15:13:40 NZDT 2006
> Max, when are change sets superior to file deltas?
A good question!
Thje main difference is that a change set is a set of deltas to one or more
of files. The reason you need this is so that merging changes that are
dependant on multiple files you get all you want and nothing else. Also a
change set is an atomic unit, and so all the files changes are applied in
one operation, preventing any partial merges into a source tree.
An example will make this more clear. Suppose that you fix a bug in your
application that requires some library changes to a couple of files and some
changes to your main forms and data modules. You pass the bug report back to
the testers and get on with life, and fix more bugs/make additions some of
which are in the same files you changed before.
Now the testers report back and say that things are sweet and its time to
merge the changes into the release branch version the tree.
Using perforce you simple merge the change set from the development branch
into the release branch and rebuild the release.
If you are using a files based system (aka most others) then you have to
manually try and figure out which deltas to the file(s) are for that bug,
and which are later changes for other bugs/features. This causes much pain
and suffering, especially if there are dependant changes.
Now all this is not so much of a problem if you don't run separate
development and release branches, but that has its own problems. Like when
its release tim and you need to get a stable build created you either have
to stop the team working and simply try and fix bugs for a release, or you
have to branch the source and try and create a stable tree by fixing or
removing stuff you don't want released.
It gets worse if you make stability fixes to a release branch, and then try
and merge those changes back into the main development branch, when these
collide with on going development. Been there and suffered that.
Its basically a scaling issue, where CVS et al work OK for single developers
or very small teams, but can't be scaled to a large teams, or teams that do
RAID development and submit a lot of changes.
Our team has created 14810 change sets over the last few years, and we work
on a minimum of four branches at once, with 5 plus developers, some of which
work from home a lot of the time. We have had to figure out how to make this
work and Perforce is in the only product on the market that lets uus work
this way with minimal pain.
Cheers, Max.
More information about the Delphi
mailing list