Windows Source Control for the Lone Developer?
bitFlipper asks: "I'm the sole developer of embedded software for a small company. Currently I'm maintaining about five different product lines, each with about 30K lines of code and 100+ files. At the moment I'm winging it without a version control system (using snapshots to CD-R), but this is an unhealthy state of affairs. The open source/big project model of many developers scattered across the globe doesn't apply here--it's just me. And since I have to provide my own tools, the budget for this is near zero. It also has to run on Win32. Oh, and the code I'm developing is not open source. I've looked at RCS (which is certainly simple, but maybe too simple) and Subversion (which is probably overkill). What can people recommend for a version control system that's free or low cost, Win32 compatible, and simple to set up, use and maintain?"
here.
CVS
not the overkill of Subversion, and a bit dated, but it'll do.
You could've hired me.
I have used PVCS in the past. Very good version control application. I am not sure about the cost though but benefits could outweigh cost. Here is the company website.
I would recommend using CVS and CVSTrac. They both work fine under Windows (as servers). CVSTrac also gives you the benefit of browsing the code from the web, a bug tracker and a Wiki.
Due to the fact that SVN isn't available for Windows (a native port, no cygwyn stuff), I recommend either Perforce or CVSNT + WinCVS. I've used CVSNT at work and home for some time and it works great.
The place where I work (embedded software development as well) uses QVCS. It was there before I arrived, so I am not sure about the setup, but overall works great, and the license cost maxes out at $100 for 4 users. You install it on a Windows box, and then launch the client copies by providing a shortcut to the server install, so cannot run more than 4 simultaneous copies, but that works for us.
I've used Component Software RCS http://www.componentsoftware.com/ several times on small project with good (not perfect) results. There is a no cost option that you might be able to use.
I have had great success using Tortoise CVS. It allows you to use a local directory as your repository rather than having to set up a CVS Server.
It integrates into the Windows shell so you can very easily see what files have changes visually from the icon, and all normal CVS operations can be done from the context menu in Windows Explorer.
On the other hand, cvs isn't terrible - and you don't need to be doing OSS or huge # of devs to warrant its use. Cygwin allows you you run in windows, and there is also a windows version of the cvs server.
But look, if you are developing something windows based, and using MS products or IDE's, VSS is not out of the question...it plays well with other MS tools, so it might make the most sense.
...begins in wonder
As everyone else around here attests to, CVS is the obvious choice.
But my question is what kind of company is it that can't afford to pay for business software? As this kind of thing can be deducted from taxes, it makes a lot of sense to let the company pay for the software and enjoy the tax relief.
Even if the company is just you, it would be better to let the corporation pay for it and not pay full price on the software out of your salary.
Charge your next customer a little more and use the difference to pay for some software. Of course it makes sense to use free software whenever possible, but I can't imagine agreeing to being taken advantage of by a company like you are describing.
I have been pwned because my
Comes with Visual Studio, and will do just about anything a group of 1-5 developers could want.
I know people trash Source Safe, but for small groups of developers, it isn't that bad.
Otherwise, you could try The Valt (http://www.sourcegear.com/vault/index.asp), but you need SQL Server to run it.
Bad User. No biscuit!
I'd definitely recommend Perforce as well, but it's not free. Of course, as a single user you can use the 2 users/2 workspaces design supported without a licence.
Believe me, you'll be happier than with the current crop of free stuff (though I'd be tempted by Subversion if it didn't depend on so many things just because they're the latest cool thing).
Perforce is nice on Linux too in that it's just a couple of statically compiled binaries that work everywhere. Pleasant change to dependency hell (like getting any recent piece of software onto Debian stable)
Tortoise SVN is a version of the subversion client server that integrates with windows 2000, XP.
Right click on a file or folder to check it in, create a repository and just about everything else. It's actually very simple to use and you get all the power of a Subversion.
definitely go for subversion. If you look for a guide on how to set up svnserve+ssh on win xp do a google search of svnserve ssh on xp
Intuitive and works like a charm.
I was just researching this very question for myself today. Found a nifty comparison between several source control systems. Perforce and BitKeeper seem like the most complete systems, with Monotone and Subversion close on their heels. The trial version of Perforce works for up to 2 people with all features enabled. It gets kind of expensive if you need more than that ($750/seat). Couldn't find actual pricing for BitKeeper, although they were prompt in replying to an email to their sales address and I'm discussing it with them.
It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
How about Darcs?
I was just recently looking to move away from CVS for my personal projects. I'm not always home, and I wanted to have copies of my repositories on at least my laptop and desktop.
At first, I was leaning towards trying out GNU Arch. But I really wanted something that had a working win32 client. So I took a look at Darcs.
I'm very happy with it so far. It is extremely easy to set up and use (but I haven't seen any gui frontends if that's the kind of thing you want). It is also very easy to keep multiple repositries in sync.
I've read that it can be slow for large projects. I don't remember reading the definition of large, but none of my repositories qualify :).
You might also want to check out this comparison or this comparison of revision control systems.
The point of having a native port is so that you don''t have to download a vast quantity of extras just to run one daemon. Not everyone has broadband...
Damien
Well, not really Winzip. Use the Win32 port of infozip. Put it in your build script, have it name the zip of your build directory with a datestamp in the filename. Have it build a zip each time you run make, or whatever your build script is.
Remember, folks, this is a solitary programmer question.
resigned
Another big plus to subversion under windows is TortoiseSVN.
This client runs as a shell extension right in explorer, so now all your VCS commands are just a rightclick away. It also includes the ability of configuring what commands are nested in the Tortoise SVN submenu, and which are out on the main context menu. All the ease of use of winzip or powerarchiver for version control. It also adds useful columns to your details view, and has a handy repository browser.
If you're on the go a lot and hop between systems, setting up apache for windows and adding OpenSSL and the Subversion modules are easy (drop me a message and I can point you to some good how-tos, but the Subversion Book (on tigris.org) is pretty much all you need). Once the modules are in place, it's only half a dozen lines in your httpd.conf to open up authenticated https access.
I currently use subversion+tortoise on all my windows machines and the commandline interface on my linux laptop. I run the server from my Win2k workstation with a single port routed through my firewall box.
I use it not just for projects, but also for my thunderbird and firefox profiles (except for the platform specific files), my mp3 collection, desktop, documents, pretty much everything i use on a daily basis.
I also have an archive tree thats not actively checked out anywhere.
DONT PANIC
... is probably what you want. A single GUI app, no Subversion server necessary. It uses a folder on your hard drive as the repository instead of a WebDAV server etc. It seems to implement Subversion internally or something...
TortoiseSVN is here
I use version control on my local Win32 machine to manage different versions of files. I've used both TortoiseCVS and TortoiseSVN in local repository mode, and I highly recommend TortoiseSVN over TortoiseCVS. Forget CVS, really! SVN is much better, even for personal use. It is lightweight, and you don't have to run any server -- the client manages everything for you. Here's information on running TortoiseSVN in local repository mode (with screenshots and all)
Quote:
"If you're not working in a team but working alone on a project and still want your work under version control you can also access a repository locally. This kind of repository access is also very handy if you just want to try out some Subversion commands and you don't want to risk screwing your "official" repository."
Without restating the original article?
Perhaps not the best solution, but it's free, and will probably work just fine for you.
I'm in the same boat as the question poser, and I've got some questions to ask:
Does CVS/Subversion automatically track changes to directory trees of code over time, or do you have to somehow "stamp" a save point or snapshot or somesuch?
I do a fair bit of code generation (due to C# and C having no generics), so will a version control system be able to track changes to data that is relevant to my code. As well, I use text and Excel files as design docs, so can they be included in the "files that matter" set?
Sorry to sound like such a n00b, but I've always been the lone programmer, even on large projects. It seems very hard for me to believe that I will gain a cost benefit (as per time invested) from a version control system. Sure, I've not read up on the different packages, but what I'm asking here is for the expert synopsis, if someone would break down the flow for me, please.
Thanks in advance.
Peace & Blessings,
bmac
Do yourself a favour -- don't try running the server on a Windows machine, it'll be a world of pain.
Just get hold of a clunky old PC, install linux, and use that as a dedicated source code control server with whatever system you want to use. You'll save yourself a lot of bother (and a bit more immunity to disk crashes, too).
install these 2, setup subversion and you're done. I use it for all of our .NET code and it works very very very good.
Never underestimate the relief of true separation of Religion and State.
What revision control system does MS use?
I hate to admit it, but for single developer projects Source Safe is actually really handy! It's absolutely pants at handling merging but this shouldn't be much of a problem if there's just one of you or even in a small team of 3 or 4 should you choose to expand the operation.
It keeps track of eveything and allows for easy versioning and comparison between versions. I found it's great if you find new problems cropping up after a certain date and you want to compare what changes you made.
Beware though, it's not much good at anything else so if you want to use multiple branches or get frequent source updates from the client or anywhere else I'd consider something else.
Well, then we don't have to help you.
Why is subversion overkill? It's easy to install and run. Use it!
I'm currently using FreeVCS to maintain a source tree with 965 files, about 30k each. It's an interesting approach in that it stores all the code in a database (DBISAM by default). It's designed for Delphi developers, but I am using to store a game engine (C++) and the associated scripts (TorqueScript), and I haven't had a problem with it yet. It also implements check out messages (why did you check this file out? "To fix the wankiness in doSomething()"), which can be quite useful once you get into multi-developer projects (like the one I'm on).
perl -e 'printf("mmm %x\n", 3735928559)'
Ask Bill nicely. I'm sure he'd look after your source code for you and make sure none of it got out.
Stick Men
No, I'm not just dinging it because it's an MS product. I've used VSS extensively, and my conclusion is that you should not put anything valuable into VSS unless you have backup copies elsewhere, which sort of defeats the purpose. It's a fragile POS, breaks at glance, and provides no functionatility that is not better implemented elsewhere and more cheaply. If you're willing to pay for a product, then both Perforce and Bitkeeper are lightyears beyond VSS. If you want free, then there are a variety of choices, Subversion with a local repo probably being the best and easiest (for Windows, at least).
Anyway, even if you *are* a lone developer, branching can be useful. VSS branching sucks, and trying to merge even more so.
I have used PVCS since version 3 (for DOS) through to its current vresion. It is a horrific piece of garbage that continues to be successful based solely on the fact that it's a brand name. It's clumsy, un-intuitive and just plain obstructive for a developer and a holy terror for a source code administrator. I've seen too many projects be hampered by PVCS to trust it any longer. Too many times, too, have I seen source code merely vanish into the Ether. And under no circumstances should you consider using this garbage for a solo project. I'd rather use SourceSafe than have to spend another project with PVCS. The sooner people get their heads out of their asses and learn about other, more effective products (e.g. StarTeam), the better off we'll all be.
16,000 customer sites worldwide with more than 400,000 licenses
And how many of them are satisfied with it? Sales numbers are not indicative of quality (See: Windows ME).
But thank you for the commercial. Your boss must be proud that you're putting in the extra effort to advertise their product on your lunch hour.
Not used it, but it looks pretty good if you're in the Windows world - like a better version of VSS. And it's free for a single user here. Also, the guy that runs the company - Eric Sink - is quite well know in blogging circles. Some of his columns about starting a company are linked to from /.
VSS is hardly the cream of the crop, but what it does do it does well. It is not an industrial strength SCC, and Microsoft has never sold it as such. So yes, branching and merging are not that hot, and it's not a client/server system and etc., but if you need that then get something else. But for medium-sized projects with 1-6 developers it works perfectly well. As long as you don't try to be clever and try to coax it into doing something it was not designed to do.
If you know what you're doing you should never get corrupted files or lose history or anything like that.
Many people use VSS because it ships with Visual Studio. Many people have fucked things up because they had no idea how to manage source control, and of course they blame it on the tool. "Bwaaahh, my 6.2GB VSS database that I never defragmented or checked is corrupted, bwaaahhh, VSS is a POS". If Microsoft had shipped the best SCC tool in the world with their development tools people whould still fuck things up, because they have no idea of what they're doing.
Soucegear vault. (http://www.sourcegear.com/)
Similar feature set as VSS, runs on MSDE (which is free) or SQL Serer 2K so it's a heck of a lot more robust, supposed to intergrate into VS.Net as well as VSS.
Single user edition is free ( http://software.ericsink.com/20040213.html#10151 )
Bullshit. What about "copies of everything somewhere else" is different from making backups of the repository every day?
There's a big difference! As long as you have a backup of the most recent version of a CVS repository, you're fine.
The allegation against VSS is that it frequently corrupts its own database. A backup copy of the corrupted data is no good. Even if you keep multiple historical backups, its still no fun to restore each of those from tape to search for the last non-corrupted copy.
Some people even claim that VSS (in whatever configs they use) is so unstable that the MTBF is too fast for a daily backup to protect against.
As long as you don't try to be clever and try to coax it into doing something it was not designed to do.
Any CM system which requires you to "lock" or "check out" a file before editing it is flawed by design.
Bullshit yourself. Of course you back up the SCC repository. The problem is that VSS repositories go bad without showing the signs until later. So you have nice backups of corrupt data. Woohoo! And yes, one can sometimes pick through and fix the problem. It's a lovely way to spend the day or weekend.
If you know what you're doing you should never get corrupted files or lose history or anything like that.
Absolutely correct. That should never happen. But we did know what we were doing, and it happened none-the-less. Nor is that a unique experience - Google around and you'll see plenty of experienced people who've had issues with VSS.
VSS may be adequate for a small developer group that never has to support a released product (no useful branching, remember?) and has time to babysit it. But there's nothing it does that CVS doesn't do better, and CVS is free, reliable, and a hell of a lot more capable. In the extremely unlikely event that a CVS repository does go tits up, one can fix the damn thing with a text editor (I think I've had to do this maybe once in several years of heavy CVS use).
Is CVS perfect? Of course not. But there's no reason to recommend VSS over CVS.
The repository doesn't get too bulky, especially since it only stores patch files from one revision to the next, not complete copies. So things like mp3s only take up their normal filesize (about) in the repository, since they're unlikely to change. /. from some guy that kept his home directory in CVS. Check my journal, it'll probably be the next entry i get around to writing, and i'll include the checked out working copy size, vs all the .svn directories removed (not working copy) vs the actual repository size.
I don't know if subversion has any special handling of binary files, or if it just stores a whole copy each time (instead of the patches i know it does for text files).
The real issue, is how long it takes to do your initial checkout. If possible, I try to do my initial checkouts on the same LAN as the repository, and then I use a subversion command ('svn switch --relocate lanurl wwwurl') to change all the working copies to use the internet url instead of the local network url for my 'server' (actually my win2k box running apache2).
I've been thinking of doing a write up on how well it's working. I actually got the idea here on
DONT PANIC