Scott on Writing

Musings on technical writing...

Version Control for the Solo Developer

I've been working for myself for over four years now, which has primarily entailed: writing, training, and software development.  What I am a bit embarrassed to admit is that, through all those years of solo software development, I not once used a version control system.  My technique for source code control was a rather crude one: I'd periodically backup the entire project to some separate directory on the harddrive, and periodically move those to CDs.  That was my process.

While this approach worked well enough and helped guard against total loss of data, it did not provide even close to the amount of features and power a decent version control system would, which include a complete history of changes between code check-ins/check-outs, branches, tools to diff current versions with older versions, the ability to roll back the code to particular checkpoints with the click of a mouse (rather than digging through old CDs).

The four years of no version control ended a few weeks ago, when I finally downloaded and installed SourceGear's Vault.  If you work on projects as a solo developer, there's absolutely no reason why you shouldn't go get Vault today - it's 100% free for a single-user license, easy to setup, configure, and get using, and uses Microsoft SQL Server (or MSDE) as its backend.

To get started with Vault, first you'll need to head over to the SourceGear Vault Downloads page and download the Server version.  (At the time of this writing, Vault is at version 2.0.6, and the Server download is 15.2 MB.)  There's a link there to download a Demo Serial Number, but if you are going to be using this as a single user, you don't need to bother with that - Vault works out of the box for single users with no need to license or demo keys.

Once you have downloaded Vault, begin the installation process.  In the setup you'll be prompted to choose what features to install - go ahead and install everything: the Server, the Client, and the Admin Tool.  Once you have everything installed, getting Vault to integrate with Visual Studio .NET is a breeze.  Simply start the Vault Client, go to the Tools menu, select Options, and then check the “Make Vault your default SCC provider” checkbox.  Once you do that, open up a Visual Studio .NET Solution.  From VS.NET, go to the Tools menu and choose Options, and select the Source Control folder.  Since you are a solo developer, go ahead and choose the Independent Developer option.  The final step is to right-click on your VS.NET Solution and choose the “Add Solution to Source Control” option.  Here you will be prompted to select what repository to add the project to.  (You can add new repositories through the Vault Client).

Once you have Vault setup and have checked out, modified, and checked in some files, you can start to see the utility of a version control system.  For example, through the Vault Client you can inspect the changes made to the file over different check-ins/check-outs, and roll back the file to an older version, if needed.

Eric Sink, the founder of SourceGear, has some good blog entries on the core logical entities of any version control system: Files, Folders, Repositories, Working Folders, and so on.  A great place to learn more about the concepts is at Eric's Source Control HOWTO articles.  So, in short, if you work on solo software projects, you owe it to yourself to get Vault today.  It's free, takes only a few minutes to download / install / setup, and can potentially save you hours of work.


On a tangent, does anyone want to wager how long it will be before tools like Vault are just a built-in part of the operating system's file system?  That is, anytime any file is changed, an old version is saved to some database, thereby giving a user the ability to easily say, “Restore file X as it was on December 14, 2003, 11:35 am.”  With hard drive capacities showing no end in sight, it seems like this would be feasible in the near future, if not today.

For a potential implementation, refer to Santry, Feeley, and Hutchinson's paper titled: Elephant: The File System That Never Forgets (PDF) (written in 1999).  I read this paper back in my graduate studies, and, IIRC, the Elephant file system allows a user to indicate how to save files, the options being: keep one (only saves the latest copy); keep all (saves every copy); keep landmark.  Keep landmark was interesting, it assumed that the longer a file had gone without being accessed, the less likely the user cared about differences between two close versions of the file.  So, if there was a flurry of modifications to a file marked as keep landmarks, and then the file wasn't modified for weeks, the file system would assume it was safe to delete some of those saved versions of the modifications of that file.

posted on Thursday, September 23, 2004 6:32 PM

Feedback

# re: Version Control for the Solo Developer 9/23/2004 8:49 PM Doug

I have to agree with you. I've been using source control a little longer than a few weeks (going on a couple years now) but using it completely changed how I develop. Combining source control with unit tests and good coding habits lets me code much more aggressively since I don't have to worry about breaking anything. If I screw up going down a path I just roll back. If there are unforseen side effects that show up in the unit tests, no big deal. Just roll back.

# Lazycoder weblog » Journaled filesystems and SCM 9/23/2004 10:44 PM Pingback/TrackBack

Lazycoder weblog » Journaled filesystems and SCM

# re: Version Control for the Solo Developer 9/24/2004 4:17 AM Per Soderlind

A nice alternative is Tortoise. There's a CVS version at http://www.tortoisecvs.org/ and a SVN version at http://tortoisesvn.tigris.org/

As a solo developer (running it on a local repository) you can run TortoiseCVS without the CVS server.

# Subversion 9/24/2004 5:53 AM DM

I have been very pleased with Subversion for source control. (Also, Tortise SVN as Per Soderlind mentioned above.)

For the tangent, isn't there some feature like that in W2K3?

# re: Version Control for the Solo Developer 9/24/2004 6:02 AM Vic Berggren

Welcome to the other side...

I was once in the camp of 'what the heck do I need source control for'. Then a much wiser colleague (actually it took 2) showed me the light!

Now, I wouldn't live w/o source control.

# re: Version Control for the Solo Developer 9/24/2004 7:21 AM Milan Negovan

Even working on some solo projects myself I find source control (yeah, ol' rusty VSS) invaluable. You truly appreciate it when you need to change something, it doesn't work and you can't undo your changes. :) Aaaaah, the power of rollback.

# .NET Source Code and Version Control - SourceGear Vault and Subversion - Solo Developers 9/24/2004 8:14 AM David Hayden - Sarasota Web Design Development - F

# re: Version Control for the Solo Developer 9/24/2004 10:01 AM Andrew Connell

I wonder (outloud) how big of a deal it is if you use VSS at work, but Vault at home? I'd prefer to use Vault, but concerned about switching my laptop to using two different SCC providers... anyone try it yet?

# re: Version Control for the Solo Developer 9/24/2004 10:02 AM Brian

I've been using Vault for personal development for 6 months or so, whenever they released it for free for the solo developer. It's a great product.

I'm anxious to try this in a busy environment to see if it performs better than VSS -- we're using CVS right now at work, recently upgraded from VSS.

As great as Vault is, I think how the tool performs when you've got multiple and concurrent revisions happening at the same time (branching, merging, etc) is where the rubber hits the road.

# VSS and Vault? 9/24/2004 10:08 AM Steve

Lemme run this by people and see if they think its do-able

On my laptop (XP Pro), i'd like to be able to use Vault for my personal websites that i work in locally (using my normal NT Login to get on my laptop), as i prefer the thought of the SQL Server being used as the file repository, not VSS's file based system

But when i log onto our network (a seperate login on my machine using out Active Directory at the office), i'd like to continue using VSS with Studio as it works already

Will the logins seperate the situations in Studio and everything else?

hope that makes sense

# re: Version Control for the Solo Developer 9/24/2004 2:54 PM Steve

Perforce (www.perforce.com) is free for up to 2 developers and knocks the socks off every other source control package i have ever used.

# re: Version Control for the Solo Developer 9/24/2004 4:51 PM Mike Gale

I did the same a few days ago. Eric's article's about Source Control helped me decide.

(I was using zipped directories...)

Not enough experience to be definitive but my feeling is that is a great move for me.

I also find "Beyond Compare" and "WebDrive" useful in my recent revamp of how I do things.

# re: Version Control for the Solo Developer 9/26/2004 9:49 AM icelava

I use VSS for company projects, integrated with VS.NET. Tortoise SVN is used at WE level for community projects.

Since I already have VSS integrated, how does Vault integrate in with VS.NET? Can they run side by side?

Yes, I am checking the web site now...

# re: Version Control for the Solo Developer 9/26/2004 10:44 PM Mike Singer

Tell the truth, Scott; if you were about just to Control Version as the Solo Developer, you would, most probably, ask the community what systems are on the market and which system is better.
But, instead, you promote the only system, not the idea in general of source control.

Trying to start with Eric new cool project?

Actually, as for me, entering non-VSS source control world for the Solo Developer means that the developer aims to became sometime a team developer.

The Globe needs yet another gang kind of Google or Microsoft.

Best Regards.
Mike Singer. (simferopol at gmail dot com)

# re: Version Control for the Solo Developer 9/27/2004 8:07 AM nalenb

I've used VSS, Tortise CVS, zipped directories and Vault beats them all in terms of features and performance.

# re: Version Control for the Solo Developer 9/27/2004 8:28 AM Scott Mitchell

Mike Singer is back!! Mike, just sharing my experiences with Vault, which have been positive. If you care to share your experiences with Vault or other SCCs (as many have done here in the comment), feel free. But, come on now - it's my blog, I'll blog about what interests me. If you don't like it, don't read my blog. Simple as that.

# re: Version Control for the Solo Developer 9/27/2004 6:45 PM Mike Singer

> But, come on now - it's my blog,
> I'll blog about what interests me.
> If you don't like it, don't read my
> blog. Simple as that.

Can’t afford not to read your blog etc; too useful stuff as for me, seriously.
I’d rather correct my style of communication.
Concerning SCCs, I’ll wait a bit with them until the advent of Visual Studio 2005 Team System.

Mike.
Sorry for wasting bandwidth.

# re: Version Control for the Solo Developer 1/17/2005 1:28 PM Ben Scheirman

Win2003 has a feature that can be enabled that basically accomplishes this. It's called shadow copy.

Shadow copy is more limited (I think it saves up to 30 versions back or something)...

anyway, obviously a developer would still want a system built with them in mind (vault, cvs, svn, perforce), but it's a nice feature to fall back on for all types of professionals (writers, photoshoppers, etc).

Just my $0.02

-Ben

# re: Version Control for the Solo Developer 12/19/2005 3:42 AM Sudheer Reddy

Is there any possibility of migrating a Source control stored in Vault to Perforce.
If so indly can you please let me know

Sudheer Reddy

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

Add To Your Reader

My Links

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<May 2008>
SMTWTFS
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

Comment Stats

DayTotal% of Total
Sunday 1866.8%
Monday 37913.9%
Tuesday 45316.7%
Wednesday 50418.5%
Thursday 53519.7%
Friday 49418.2%
Saturday 1666.1%
Total 2717100.0%

Hour1Total% of Total
12:00 AM 652.4%
1:00 AM 682.5%
2:00 AM 622.3%
3:00 AM 742.7%
4:00 AM 572.1%
5:00 AM 1033.8%
6:00 AM 1084.0%
7:00 AM 1585.8%
8:00 AM 1716.3%
9:00 AM 1475.4%
10:00 AM 1716.3%
11:00 AM 1816.7%
12:00 PM 1886.9%
1:00 PM 1696.2%
2:00 PM 1605.9%
3:00 PM 1324.9%
4:00 PM 1073.9%
5:00 PM 923.4%
6:00 PM 913.3%
7:00 PM 963.5%
8:00 PM 833.1%
9:00 PM 782.9%
10:00 PM 792.9%
11:00 PM 772.8%
Total 2717100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 5.54144
Monday 5.22339
Tuesday 4.28419
Wednesday 7.67637
Thursday 6.90607
Friday 5.48411
Saturday 5.33160
Total 5.842717

Hour1 Entry MadeAvg.Total
12:00 AM 5.0035
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 7.0035
8:00 AM 5.35107
9:00 AM 6.32278
10:00 AM 6.47246
11:00 AM 4.41181
12:00 PM 6.88330
1:00 PM 3.00111
2:00 PM 5.41222
3:00 PM 8.64285
4:00 PM 4.0589
5:00 PM 5.92154
6:00 PM 4.52113
7:00 PM 9.67174
8:00 PM 9.80147
9:00 PM 5.05111
10:00 PM 5.4265
11:00 PM 4.5732
Total 5.842717

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles