Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualBregma

Posted 21 January 2013 - 01:20 PM

Two important advantages that modern VCSes like git or hg have over their last-century forebears like SCCS, RCS, CVS, SVN, VSS, etc. are this.

 

(1) atomic commits -- when you commit more than one file, it's done as a unit.  It can be reverted as a unit.  Do not consider this a trivial advantage, since one of the main reasons for having a VCS is so you can revert to a known good point.  Having a VCS that does not have atomic reverts is like having a car with no wheels or axle.

 

(2) branching speed -- SVN branching is tangled and confusing at best, and impractical in a real project.  On larger professional-level projects using SVN we would have to freeze developer checkins for about 48 hours while the repo was being branched for release.  After that, changes would have to be made on both branch and trunk for a while, since the branches had diverged.  Branching with a modern VCS is instantaneous and a normal part of every day workflow:  branch, make a few changes and commit them, repeat, merge to trunk (or another branch).  Cherry picks between branches are simple and fast.

 

So, if you use VCS the way most people do backups (ie. never rely on them), or if you're a single developer working on a very small project that will never be released, yer grampa's source control is great.  For everything else, there's a DVCS.


#1Bregma

Posted 21 January 2013 - 01:20 PM

Two important advantages that modern VCSes like git or hg have over their last-century forebears like SCCS, RCS, CVS, SVN, VSS, etc. are this.

 

(1) atomic commits -- when you commit more than one file, it's done as a unit.  It can be reverted as a unit.  Do not consider this a trivial advantage, since one of the while reasons for having a VCS is so you can revert to a known good point.  Having a VCS that does not have atomic reverts is like having a car with no wheels or axle.

 

(2) branching speed -- SVN branching is tangled and confusing at best, and impractical in a real project.  On larger professional-level projects using SVN we would have to freeze developer checkins for about 48 hours while the repo was being branched for release.  After that, changes would have to be made on both branch and trunk for a while, since the branches had diverged.  Branching with a modern VCS is instantaneous and a normal part of every day workflow:  branch, make a few changes and commit them, repeat, merge to trunk (or another branch).  Cherry picks between branches are simple and fast.

 

So, if you use VCS the way most people do backups (ie. never rely on them), or if you're a single developer working on a very small project that will never be released, yer grampa's source control is great.  For everything else, there's a DVCS.


PARTNERS