This article is the first in a series of guides about my experiences using Subversion (svn) for Web Development. These are the articles in the series:
1. A Desktop-Laptop Solution for Web Developers – Using Subversion to Co-Exist (this article)
2. What is Subversion and How Does it Help in the Web Design and Development Process?
3. A Subversion Workflow for Web Developers and Web Development
4. A Review of SmartSVN – a GUI Subversion client for Windows
5. A Quick Review of Online Options for Hosted Subversion for Web Developers
6. A Brief Review of Assembla, an Online Subversion Hosting Company.
Like many of you out there, I develop on my laptop on the road, but have a desktop at home. I have a fantastic docking station and large monitor for my laptop, but the problem still remains: my desktop is a dual-monitor machine that is substantially more powerful than my laptop. And while it’s nice to use the laptop in a dual screen configuration (14.1″ laptop extended across a 21.5″ monitor), my problem remained that I wanted to take advantage of the portability of the laptop on the road, but the power of the desktop at home — yet keep my laptop coding in sync with my desktop coding.
The solution to the problem, briefly, is the subversion version control system (svn). But before I talk more about svn for web developers, I want to discuss the other options I considered.
1) Synchronization software: Synchronization software (syncback is my favorite for going across the machines on my network – see my syncback review of some of syncback pro’s advanced features) was an option, but my biggest concern with sync software was time. I found it very inconvienient to come home, dock the laptop, run a sync, and then start working on the desktop. It’s an option, but it didn’t work for me, especially because doing it this way adds the complication of left-right syncs, which I fear can lead to data loss (specifically if I’m up late finishing a project).
I considered online synchronization software (security issues aside) but the problem of left-right syncing and real-time syncing turned me off to this option. When I’m working on a project, I don’t like the idea of having a sync client running, trying to make real-time syncs of my work. And yes, I know those features can be turned off, but this became too bulky an option.
2) Shared Folders – I also considered using shared folders. Simply share the main folder on the laptop and work off of the mapped to network drive on the desktop machine. This again was well and good, but unless the laptop was up and running, the desktop was unusable. And if I decided to make changes without using the mapped network drive, then I’d really have a hard time re-integrating my desktop work with my laptop data — which was probably in a slightly different state of development.
And of note, using synchronization software or a shared folder option, didn’t help me in any way in my quest to also maintain some level of version control). In case you are interested, here is how I used to do version control (on a single machine) prior to my implementation of svn.
3) Just use the bleepin’ laptop – In fairness, this option is a good solution. Everything works and my data is all in once place (backed up in many places, of course). The problem is that I cannot escape the desire to use the more powerful desktop machine and take advantage of its resources and dual-monitors. Besides, if I always work on the laptop what excuse do I have to get a third monitor for vertical coding?
So after much searching, reading and digging, I decided to implement Subversion for my synchronization and version control needs. I will discuss my svn web development workflow in a later article, and while my process may not be perfect, it’s a work in progress that does get the job done.
In the next article, #2 in the series on web development and subversion, I will briefly discuss what subversion is and how it helps in the web design process.