Penguin
Diff: VersionControlSystem
EditPageHistoryDiffInfoLikePages

Differences between version 10 and predecessor to the previous major change of VersionControlSystem.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 10 Last edited on Monday, June 15, 2009 7:55:18 pm by LawrenceDoliveiro Revert
Older page: version 7 Last edited on Monday, January 12, 2009 9:27:27 pm by LawrenceDoliveiro Revert
@@ -8,8 +8,13 @@
 * GnuArch 
 * [RCS] 
 * SubVersion 
  
-See EricRaymond's essay ''[Understanding Version Control|http://www.catb.org/~esr/writings/version-control/version-control.html]'' for an introduction to the major concepts and a comparison of the major systems. 
+See EricRaymond's essay ''[Understanding Version Control|http://www.catb.org/~esr/writings/version-control/version-control.html]'' for an introduction to the main concepts and a comparison of the major systems. The main stages of development can be summarized as follows:  
+* The very earliest systems were centralized. Not only that, but they required users to check out files specifically for writing before they were allowed to be changed. This was to prevent multiple users from modifying the same file at the same time, which was thought to lead to chaos.  
+* This one-writer-at-a-time restriction turned out to be a lot more trouble than it was worth. Later systems (CVS, Subversion) dispensed with locking. Instead, when one user tried to check in a set of changes, and someone else had modified files (whether the same or different ones) since the first user did their checkout, the first user would be blocked from doing the checkin until they had manually incorporated those changes that had been checked in in the meantime.  
+* Even later, clever techniques were invented to handle ''merging'' of overlapped changes. This was immensely liberating, by allowing parallel development, in a more collaborative way than before. The natural step from this was the evolution of [DistributedVersionControlSystem]s. From this point on, the evolution of VCSes has basically been about developing increasingly sophisticated architectures for handling merging.  
+  
+Each development took a long time, much of which was spent simply coming to recognize that there was a problem that needed to be solved. Many of the new developments remained controversial to adherents of older ways of doing things, even to the present day
  
 ---- 
 CategoryVersionControl