I'll preface this by saying I know this might be a bit overkill but this problem is driving me crazy. I write sketches on my home computer, laptop, and occasionally at work. I usually email the sketch to myself then download it and work on it elsewhere. The problem is sometimes I find myself rewriting the same code because I forgot I worked on it on a different (eg still on the laptop but I'm using my desktop now).

Do other people have the same problem? I know *of* git, svn, cvs, etc but I've never used one or know which would be the best to use for this case. Versioning a sketch seems overkill to me but I think it will solve the problem of having incomplete sketches or the stupendously annoying I-forgot-I-wrote-this-so-I'll-recode-it-again.

Any suggestions for the best versioning system for Arduino sketches would be greatly appreciated. It doesnt have to be fancy. I just want something that I can upload some work from one computer, download it from another, then look at the history and find an old version or missing function, etc.

I don't use versioning for sketches yet (I think it's time to start!), but you can work with any of the many systems available.

IMO for a single user with multiple machines, SVN is probably a good choice. You can get free SVN hosting from a bunch of places. Basically you have to think of the repository as the parent folder for the files. When you get to a computer, you "update" the local copy from the repository, and when you leave that computer you "commit" them back to the repository (or more often, like just before making a broad sweeping change that you may want to undo later!).

There's a lot more to version control, but for what you are trying to accomplish that should get you going.

I use a free unfuddle http://unfuddle.com/ account to handle my personal web sites and projects. I know that there are others out there, but that's the only one I have experience with. I'm sure that others can recommend other products.