What Is Source Control and what is DARCS?
Source control is a specialized database that a programmer uses to manage and organize their work. In the most basic sense, the programmer will "check out" files from source control and then "check them in" after he or she has finished making modifications or improvements to their software.
At Jewelry Luv, our source control app of choice is DARCS. It stands for David's Advanced Revision Control System.
Who Should Use Source Control?
Everyone! I don't care if you have a 10 person team or if you are a team of one. Yes, even the lone programmer should use source control. The database makes sure that you can get back any version of a file that was ever checked in. For a team of programmers, this makes sure that nobody ever truly overwrites someone else's work by accident. For the single programmer (and the large team), it means being able to go back and look at an older version of your software at the drop of a hat or to start trying out something new and being able to revert easily if needed.
Concurrent Versions
For a long time, CVS (Concurrent Versioning System) has been the mainstay of source control methods. This is because it is free for anyone to use and because it is flexible. It allows two or more programmers to check out the same file. When they commit their changes, the software will direct them on how to merge their work with that of their teammates. This is a big deal! Most systems prior to CVS required the first programmer to submit his changes before the second programmer could check out the same file. Previous systems did not know how to deal with conflicts and so simply would not allow them to ever exist. This slowed down programmers working in teams. As it turns out, concurrent versions of the same file are usually easy to merge because each team-mate usually works on different parts of the file. It doesn't take long to pull your team-mate over and discuss the merge process.
CVS has been around a long time, probably since the mid 1970's. It is still a good system and probably the most widely used. It does; however, have some shortcomings. It can be difficult to move directories and folders around which is perhaps the number one concern. Since around 2000, a new tool named "Subversion" has been developed to fix the main gripes people have with CVS. There are graphical clients for Subversion and CVS that you can use on practically any operating system.
Distributed Version Control
In our mind, after concurrent versioning, the next big thing in source control is distribution. This is the ability for team-mates to work on a "mini" source control database of their own. They can do all the check in and check outs on their local hard drive. This is really fast and makes you more likely to create additional iterations of your project since you don't have to hit the network each time, especially on a collaborative open source project where the source control server is not on your local network. More importantly, you can work on your own internally consistent view of the source code without affecting team-mates at all. Then, when you are ready to move your changes into the primary source control database, you flip a switch and all the code goes and integrates. It will warn you about conflicts and ask you to resolve them interactively. Neither CVS nor Subversion offer this type of functionality.
At Jewelry Luv, we use DARCS, which stands for David's Advanced Revision Control System. We chose it because it is free and easy to use, but most importantly, it is a distributed source control system. There is no graphical interface to DARCS that we know of, but that is not important. The command line tools are easy to use and a GUI is just not necessary.
Distributed source control systems continue the idea that it is best to do whatever you can to stop team-mates from tripping over each other yet provide the structure and tools to keep multiple versions of your programming files. By keeping your "mini" database of source changes, you don't confuse people who try to sync to the "current" view of the primary tree. You are free to experiment and then merge your updates when you are ready. This results in having a compilable "current" tree more often than not.
Conclusion
Use source control early and often. Don't wait for problems to occur. Don't wimp out and use something like "Visual Source Safe" just because it was relatively easy to install on your PC from a Microsoft CD. Take the time now to learn one of the better free source control systems out there and keep away the white hair from your head a bit longer.
