Ted Patrick > { Events & Community } > Adobe Systems


Version Control

We use version control for projects as it allows many developers to work on a single project in parallel without overwriting each others work. It also provides a simple deployment model allowing us to update and publish on demand.\0

There are many way to version control software and many commercial/non-commercial vendors of version control software. In our consulting practice we use CVS ( Concurrent Versions System ) as it provides high quality, well tested, widely deployed, open source version control system built on open standards. CVS is very inexpensive to implement as most parts are free and the clients are available for all platforms. CVS is a client server system that exchange data over the CVS protocol.

I think about CVS as an online file system. The file system stores data in the file/folder paradigm, yet allows multiple versions to reside within the file/folder hierarchy under a single file. Each version of a file is marked with time submitted, author/submitters, and relevant file data including notes. You can also build collections of files to allow for easy deployment or project grouping. On larger projects version control becomes essential as the potential for loss of work rises exponentially with the number of developers working in parallel.

The first thing you need to use CVS is a client. We use TortoiseCVS as a client on Windows as it integrates into the file system easily. With TortoiseCVS, you simply create a folder, Right-Click > CVS Checkout, Enter URL & path to CVS Server, Press Enter. The client then syncs the current distribution version of the servers file system. (Try testing this out on the many public CVS servers for open source projects or via a free CVS server.) You now have a local copy of everything on the server for local work. You can then edit files and commit your changes back to the server, assuming you have access to commit. Other developers working on the same system can obtain your changes after you commit. This simple shared file system allows many people to work in parallel, yet not overwrite each others work. Ideally CVS gives you a perfect historical record of software development, so long as everyone commits their changes.

Version control is very handy for deployment. We often install a CVS client on deployment and staging servers allowing the team to deploy a version via CVS at any time to any location. The key is that CVS allows us to take a snapshot of the repository and recreate that version at any time. Assuming changes to a site are coming up, we make the changes in CVS, test the updates on a staging server, then deploy a version to production when the time is right. CVS provides us some flexibility in this regard as it works into our development process without to much hassle.

As far as CVS servers, I would highly recommend working online. CVS can be difficult to work with as a server and when the repository gets big, you will need a specialist to work with your files. We chose to work online because it provides a simple offsite backup of all our work and security is as good as you make it (SSH, Encryption, Firewall port blocking per IP). So long as we can access the Internet, we can work effectively. I can easily say that I sleep better at night knowing that our project files are safe in a CVS repository. Should we loose the online version we have 2 nightly mirrored back-ups (via CVS clients), should we loose a client machine, the repository is still available. When we do loose work (local delete, coffee in your keyboard, dog ate my homework), we only loose the uncommitted portion of a project exposed to a single user. Typically this strategy limits loss to less than 1 day of work.

Below are a list of links regarding CVS.

CVS hosting
Versionhost.com - *****
CVS Dude - Free Hosting with upgrades - ****
Sourcehosting.net/
Commercial SourceForge

Commercial CVS Support
Ximbot CVS Support - Local hosting Help

Google CVS Links

Articles of Merit
Intro to CVC ( from the MotherShip)
CVS for New Users
CVS Server Versions
Command Line Tutorial
CVS for Web Development - ****

Books of Merit
Pragmatic Version Control - ***** Excellent Read for CVS and Project workflow!
Essential CVS - Oreilly - ***** All the details

Clients of Merit
Tortoise CVS
ViewCVS
Mozilla Bonsai Web View/Client
CVSGUI - WINCVS, MACCVS, GCVS
JAVA CVS Client
SmartCVS - Code Compare, Diffs Management- Commercial Excellent!!!
Nice CVS Management / Reporting Tools
Concurrent Versions System

Cheers,

Ted ;)

2 Responses to “ Version Control ”

  1. # Anonymous Draco

    Is there a way to use CVS projects included in Flex Bulider to communicate with repository?

    I have been trying to do this, but didn't managed to do that.
    I can checkout, but I can't compile mxml files because it is CVS project not Flex project :(

    PS. I think u should delete this comment above :)  

  2. # Anonymous cksachdev

    A simple tutorial on configuring SVN Server and client is here:
    http://9developers.blogspot.com  

Post a Comment



Jobs


Flex Jobs
city, state, zip


© 2008 Ted On Flex