If you’ve ever collaborated with other people on a project, you know the frustration of constantly swapping files. Some do it by email, some through file upload services and some by other methods. It’s a pain in the neck, and every designer and developer knows it. Revision control is an excellent way to combat the problem of sharing files between workers. [Links checked Nov/16/2016]
Most web-developers have probably worked with some sort of revision control system, but designers may find it a foreign concept. The most obvious benefit of using revision control is the ability to have an unlimited number of people working on the same code base, without having to constantly send files back and forth.
You might be interested in the following related posts:
- Ultimate Round-Up For Version Control with Subversion2
- Modern Version Control With Git353
- Moving A Git Repository To A New Server4
But designers and developers can both benefit from using revision control systems to keep copies of their files and designs. You can instantly browse previous “commits” to your repository and revert to earlier versions if something happens.
This article reviews some of the top open-source version control systems and tools that make setting up a version control system easy.
CVS6 is the grandfather of revision control systems. It was first released in 1986, and Google Code still hosts the original Usenet post announcing CVS. CVS is the de facto standard and is installed virtually everywhere. However, the code base isn’t as fully featured as SVN or other solutions.
The learning curve isn’t too steep for CVS, and it’s a very simple system for making sure files and revisions are kept up to date. While CVS may be an older technology, it’s still quite useful for any designer or developer for backing up and sharing files.
CVS Resources Link
Subversion15 is probably the version control system with the widest adoption. Most open-source projects use Subversion as a repository because other larger projects, such as SourceForge, Apache, Python, Ruby and many others, use it as well. Google Code16 uses Subversion exclusively to distribute code.
Because of Subversion’s popularity, many different Subversion clients are available. If you’re a Windows user, Tortoise SVN17 is a great file browser for viewing, editing and modifying your Subversion code base. If you’re on a Mac, Versions18 is an elegant client that provides a “pleasant way to work with Subversion.” Xcode is Apple’s developer environment and Subversion client that ships with Leopard on a Mac.
SVN Resources Link
- Ultimate Round-Up For Version Control with Subversion19
- Subversion home page20
- Getting Started with Subversion – Mac21
- Getting Started with Subversion – Windows22
- Subversion for Designers23
- Beanstalk24 – A hosted Subversion system
- Comparison of Subversion Clients25
- Subversion for Java26
Git28 is the new fast-rising star of version control systems. Initially developed by Linux kernel creator Linus Torvalds, Git has recently taken the Web development community by storm. Git offers a much different type of version control in that it’s a distributed version control system. With a distributed version control system, there isn’t one centralized code base to pull the code from. Different branches hold different parts of the code. Other version control systems, such as SVN and CVS, use centralized version control, meaning that only one master copy of the software is used.
Git prides itself on being a fast and efficient system, and many major open-source projects use Git to power their repositories; projects like:
GitHub31 has recently helped establish Git as a great version control system, providing a beautiful front end for many large projects, such as Rails32 and Prototype33. However, Git isn’t as easy to pick up as CVS or SVN, so it’s much harder to use for a beginner.
Git Resources Link
- Modern Version Control With Git353
- Modern Version Control With Git, Part 236
- Git on Wikipedia37
- Git SVN Comparison38
- git-gui39 – a multi-platform user interface for Git
Mercurial40 is another open-source distributed version control system, like Git. Mercurial was designed for larger projects, most likely outside the scope of designers and independent Web developers. That doesn’t mean that small development teams can’t or shouldn’t use it. Mercurial is extremely fast, and the creators built the software with performance as the most important feature. The name “mercurial” is an adjective that means “Relating to or having characteristics (eloquence, swiftness, cleverness) attributed to the god Mercury.”
Aside from being very fast and scalable, Mercurial is a much simpler system than Git, which is why it appeals to some developers. There aren’t as many functions to learn, and the functions are similar to those in other CVS systems. It also comes equipped with a stand-alone Web interface and extensive documentation on understanding Mercurial if you have been using another system.
Bazaar42 is yet another distributed version control system, like Mercurial and Git, that offers a very friendly user experience. It calls itself “Version control for human beings.” It supports many different types of workflows43, from solo to centralized to decentralized, with many variations in between.
One of the main features of Bazaar is the fine-grained control you’ll have over the setup. As shown with the workflows, you can use it to fit almost any scenario of users and setups. This is a great revision control system for nearly any project because it’s so easy to modify. It’s also embeddable, so you can add it to existing projects.
Bazaar resources: Link
- Bazaar in 5 minutes48 – How to set up Bazaar quickly.
- Bazaar migration guides49 – Guides on migrating to Bazaar from CVS, Subversion, Darcs, Mercurial and other systems.
- Bazaar vs. Git50 – Showcases the differences between the two decentralized systems.
Monotone51 is the baby of the distributed revision control bunch. While many of Monotone’s peers focus on performance, Monotone places higher value on integrity than performance. In fact, it can take quite a bit of time for a new user of Monotone to simply download the initial repository due to the extensive validation and authentication required.
Monotone is fairly easy to learn if you’re familiar with CVS systems, and it can import previous CVS projects. However, it’s not quite as popular as other version control systems.
Version Control Tools Link
- QCT GUI commit tool52
A version control commit tool that supports Mercurial, Bazaar, Cogito (Git), Subversion, Monotone, and CVS.
- Meld53 is a merge and diff tool that allows you to compare two or three files and edit them in place, while updating automatically. It works with CVS, Subversion, Bazaar and Mercurial.
Version Control Resources Link
- Distributed Revision Control Systems: Git vs. Mercurial vs. SVN54
A quick look at the major differences between the three types of revision control systems.
- Revision Control Systems55
The Wikipedia article on revision control.
- Choosing a Distributed Version Control System56
Article showing the pros and cons of each version control system. (al)
- 1 https://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/
- 2 https://www.smashingmagazine.com/2009/03/ultimate-round-up-for-version-control-with-subversion/
- 3 https://www.smashingmagazine.com/2011/07/modern-version-control-with-git-series/
- 4 https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/
- 5 http://www.nongnu.org/cvs/
- 6 http://www.nongnu.org/cvs/
- 7 http://www.tortoisecvs.org/
- 8 http://eclipse.org
- 9 http://netbeans.org
- 10 http://www.gnu.org/software/emacs/
- 11 http://www.linuxdevcenter.com/pub/a/linux/2002/01/03/cvs_intro.html
- 12 http://tldp.org/REF/CVS-BestPractices/html/index.html
- 13 http://www.pushok.com/soft_svn_vscvs.php
- 14 http://subversion.tigris.org/
- 15 http://subversion.tigris.org/
- 16 http://code.google.com
- 17 http://tortoisesvn.tigris.org/
- 18 http://www.versionsapp.com/
- 19 https://www.smashingmagazine.com/2009/03/ultimate-round-up-for-version-control-with-subversion/
- 20 http://subversion.tigris.org/
- 21 http://www.rubyrobot.org/tutorial/subversion-with-mac-os-x
- 22 http://codebetter.com/blogs/peter.van.ooijen/archive/2008/05/22/getting-started-with-subversion.aspx
- 23 http://www.thinkvitamin.com/features/design/subversion-for-designers
- 24 http://www.beanstalkapp.com/
- 25 http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients
- 26 http://svnkit.com/
- 27 http://github.com
- 28 http://git-scm.com/
- 29 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary
- 30 http://git.or.cz/gitwiki/GitProjects
- 31 http://github.com
- 32 http://github.com/rails
- 33 http://github.com/sstephenson/prototype/tree/master
- 34 http://github.com
- 35 https://www.smashingmagazine.com/2011/07/modern-version-control-with-git-series/
- 36 https://www.smashingmagazine.com/2011/08/modern-version-control-with-git-part-2/
- 37 http://en.wikipedia.org/wiki/Git_(software)
- 38 http://git.or.cz/gitwiki/GitSvnComparsion
- 39 http://www.kernel.org/pub/software/scm/git/docs/git-gui.html
- 40 https://www.mercurial-scm.org/
- 41 http://bazaar-vcs.org/
- 42 http://bazaar-vcs.org/
- 43 https://www.smashingmagazine.com/2011/01/cleaning-up-the-mess-how-to-keep-your-coding-workflow-organized/
- 44 http://bazaar-vcs.org/BzrSupport
- 45 http://bazaar-vcs.org/BzrPlugins
- 46 http://bazaar-vcs.org/3rdPartyTools
- 47 http://bazaar-vcs.org/
- 48 http://doc.bazaar-vcs.org/bzr.dev/en/mini-tutorial/index.html
- 49 http://bazaar-vcs.org/BzrMigration
- 50 http://bazaar-vcs.org/BzrVsGit
- 51 http://monotone.ca/
- 52 http://qct.sourceforge.net/
- 53 http://meld.sourceforge.net/
- 54 http://www.russellbeattie.com/blog/distributed-revision-control-systems-git-vs-mercurial-vs-svn
- 55 http://en.wikipedia.org/wiki/Revision_control
- 56 http://www.dribin.org/dave/blog/archives/2007/12/28/dvcs/