Edit AllPages

Pages relating to General/VersionControl: [Topic]

General/VersionControl is the process of storing projects in a specialized source code management system. General/VersionControl system store an entire project in a central repository, and provide the ability to extract not only the latest data that was stored, but also every version of every file which was ever stored in the repository. Most General/VersionControl systems also provide other useful features such as the ability to track different branches of the same project, semi-automated merging of disparate changes made by different programmers, etc.

General/VersionControl is an essential technology to use for all programmers. Programming without General/VersionControl is like going hiking without a backpack. Sure, you can hold your supplies in your hands, but it’s harder and more error-prone. And the worst part is that if you’ve never really used a backpack, you might not even realize what you’re missing out on.

First, let’s get the disadvantages out of the way. Yes, there are disadvantages. I believe that they are by far outweighed by the advantages, but it’s still best to list them.

Now, assuming that list hasn’t scared you off, here’s the big one: why should you use version control?

The two most popular General/VersionControl systems today are CVS and General/SubVersion. CVS is the old standby, and General/SubVersion is the up-and-coming. General/SubVersion is highly recommended as it offers everything CVS offers, plus a little bit more, but without breaking from the CVS tradition. With both systems, you can run them locally without setting up any kind of server process, or you can run them on a central server.

I agree. General/SubVersion is definitely the newest, fanciest thing. Some words of caution though. General/SubVersion is not as much like CVS as it is claimed to be. Here are the differences that I don’t like:

Well, I’ve been using Subversion on my project for a while now, and while I’ve never used CVS, I’d say Subversion is the best tool for the job. I’ll play devil’s advocate on the points above:


Git is another version control system that has appeared–February 2008 General/MacTech (in print) has an article on it. The key difference is that respositories can be held on each individual’s system rather than a central server. Users commit to their own repository, and user repositories may be synchronized, peer-to-peer. This is called a distributed version control system. One advantage is that if the server crashes or otherwise becomes inaccessible to you, you don’t lose the project history.

Other recently developed distributed version control systems include Bazaar and Mercurial .

Perforce is a well-established, commercial SCM, supported by Xcode.

How about distributed versioning systems? Git? Mercury (hg)? General/BitKeeper?