views:

4327

answers:

29

Up till now I have been developing my personal and school projects at home without using any form of revision control software to handle my changes and whatnot.

My question is, how feasible is it to use a Version Control application (such as TortoiseSVN) for personal projects I do for myself (and even school projects) ?

Is it worth the hassle of checking in, committing changes and all that routine, just for 'home-projects' instead of just making manual backups?

[UPDATE]

So basically, by skimming through all the answers, I have come to the answer that yes, I do need to set up a revision control system for my pet projects.

Excellent, thanks for all the replies. I will now take the time to read every one and extract the good parts.

[UPDATE]

I have now set up Subversion on my system, and have used this online tutorial as a guide: 'Practical guide to subversion on Windows with TortoiseSVN'.

As a follow up to another Subversion post I opened, I have also installed svnserve server as a Windows Service, and have been able to connect to my home repositories remotely.

Links:

+160  A: 

Completely.

Just some points from the top of my head:

  • Sometimes we do stupid mistakes. Having a source control safety net is a must.
  • Tag important milestones. Even in home development you may want to mark a set of files and revisions as being a specific software version.
  • You train for your professional life. Putting in your head the work methodology associated with using source control prepares you professionally.
  • Storage efficiency. Current source control systems store revisions as a delta difference to the previous revision. This means that it is more disk efficient as the entire file is not stored but only the differences.
  • You have the history for all your source tree. You can rapidly see what was changed and when was changed. Compare files from different revisions and merge easily.
  • You can branch to experiment. If you have some experiments in mind you can create a branch (a new independent development line) and test it. In the end, if you are satisfied with the results, merge it in the HEAD (main development line). You get all this for free without having to create a copy and receive the same benefits from using the source control even while experimenting.
smink
Just one thing to add: provided the version control system is on a remote machine, it provides a simple online backup of your work.
Chris Lively
Well summarized!
Peter Meyer
I agree completely. Any time you have to take advantage of a single one of these features, you've already gained back the minor cost of using source control in the first place.
Chris Farmer
Not to mention version control is cool and fun :)
Andy Webb
Bullet point 4 is not applicable to git. git is optimized for merge performance, and storing diffs is not beneficial to this goal. these days it's mostly assumed that you have enough disk space for your source code. However all other points are reasons to use any source control and git of course satisfies all of them.
TokenMacGuy
Once again I recommend git, especially for points 2. 5. and 6. git has a *very* nice interface for tagging, branching, merging etc. and some of the graphical tools such as qgit or gitk make it very easy to see how all your branches fit together.. it's also a piece of cake to turn your current (unversioned) working directory into a git directory with 3 commands: git init, git add ., git commit
David Claridge
If your personal project is big enough to make point 4 (storage efficiency) matter, you definitely need source control!
Tikhon Jelvis
+13  A: 

Yes. Absolutely.

I use SourceGear Vault (free for single users) and it has saved me from going down the wrong development path countless times. (I.e. I've made a bunch of structural changes only to realize too late that it's a flawed approach). With source control, a simple 'Undo Checkout' fixes things without having to remember how things were before and attempt to manually undo my screw-up.

Andrew Rollings
Sourcegear Vault or SourceVault?
icelava
Sorry. SourceGear Vault... (will edit to match)
Andrew Rollings
+11  A: 

It's very easy to set up, but might seem like a waste of time until you need it, at which point you will be very, very happy you used it!

Greg
A: 

You can definitely set up your own server. And it is worth it, as it gives you a history of where you've been.

If you are on a Unix box, you could use RCS for a very minimal source control solution without any need for a server.

Edit:

RCS is clearly very old fashioned, and totally unsuited for any serious development. But for providing history for a couple of configuration files, it's very quick to run. I use it when the alternative is to store .bak or .orig copies.

If you're doing some serious stuff that git is probably the right choice for home development. If you have a server then subversion might well be the right choice.

Douglas Leeder
I find it hard to imagine a situation where I'd recommend the use of RCS today.
Greg Hewgill
Setting up RCS is a bit easier than some other VCSs, but not by much. It's harder to use effectively than something like Subversion, and doesn't offer nearly as many advantages. I can't think of a good RCS situation either.
David Thornley
Actually I've never used it for source code (modulo a university project many years ago), but I use it occasionally for configuration files. It's a little easier to setup for these isolated files, although git is pretty close. I haven't found any centralised source control that is as easy to setup as RCS or git.
Douglas Leeder
+5  A: 

Yes. Just think at it as a kind of "unlimited undo". Sooner or later you will become addicted to it :-)

Roberto Liffredo
+8  A: 

I always place my source under version control even for pet projects that I do at home.

I personally feel that Subversion is great for this purpose and it's extreamly simple to setup.

Just setup a repository on your local machine (I would just use TortoiseSVN) and commit your code there.

Then you will have revision history as well as the other neat features of version control on all your machines.

Ryan Smith
+2  A: 

I find that it is extremely helpful to have a SVN server setup because I find myself going back through revisions and other 'throw away' projects because I remembered some function or way of doing something that I could use now. Having the SVN server, I know that the code is stored at home and I can pull it up later.

Redbeard 0x0A
+10  A: 

Totally. You set it up once, but use the benefits forever. I'd suggest setting it up on a second machine though, just in case your dev machine breaks.

Dmitri Nesteruk
Seconded. This gives you automatic redundancy: your dev machine has the working copy, your second machine has the history, either can go down and you still have your work. I use a Terastation with RAID for my repository, so I should only lose data if my house burns (and then I go to backup :-))
kdgregory
Yes, it's also worth mentioning that one can set up replication for source control databases. My subversion repository in Russia gets replicated on the server in UK.
Dmitri Nesteruk
In Russia, source controls you!
JoshJordan
I'm definitely upvoting *that* comment :)
Dmitri Nesteruk
+2  A: 

100%. Apart from the many practical advantages, if you ever apply for a job in SW development, hands-on experience of using and managing an SVN (or similar) system for home projects will do wonders for your resume.

Roddy
+4  A: 

There are lots of recommendations here for Subversion. In my opinion, something like Mercurial, Bazaar, or maybe Git (I haven't read about Git yet) is not only more powerful than Subversion, but also easier to setup. None of these tools require you to setup a server at all.

With Mercurial, you just install the command-line tool, do an "hg init" to create your repository, and then you start adding files. That's all there is to it.

Setting up Subversion isn't rocket science, but the newer revision control systems are much, much simpler.

Clint Miller
I like using subversion because it *is* running on a separate server which automatically backs itself up to Amazon S3. I don't have to worry about which one of my PCs has the latest version of any particular project. The server is the authoritative source.
Ferruccio
git is as simple as you describe, the repository is just a folder on your hard drive.
Svante
git++
David Claridge
+4  A: 

I've kept my whole master's thesis under source control - both code and the thesis itself - so I'm a strong advocate of doing this, and not just for code.

For individual projects, the main advantage is the freedom to change things and experiment, knowing that you can always revert back to the previous version if it doesn't work. And it gives you implicit backups of your work (just make sure your svn repo is at the very least on a different hard drive than your main work)

Kena
+25  A: 

It's totally worthwhile.

Note that you don't have to set up a fully fledged SVN server either. You can just create a repository in the local file system, and connect with the file:// URL syntax. This means you don't have to go through the hassle of setting up an SVN daemon (which is probably overkill for a single user project)

You could also look at lighter weight options such as git that keep all the working files locally without having to even create a separate repository. Git gives you a few more options for how you set up your source control down the track as well.

madlep
I recently tried out git because a project I was following used it. I immediately switched to git for my personal and work projects as soon as I saw how simple and *fast* it is. Highly recommended.
Dave Sherohman
+4  A: 

Whenever I start working on a large project, be it a programming project or something completely different like a thesis or a report, I always use version control. I'm considering to get a hosted repository somewhere (shouldn't cost too much), but for now, I usually use the 1-click SVN installer to quickly install a local subversion server. It's saved my life so many times now, that I wouldn't want to work without it. It gives you so much freedom!

Some more tips:

onnodb
Excellent point! Revision control systems aren't just for source code.
Dave Sherohman
+4  A: 

TortoiseSVN is the way to go. There's no need for a SVN server - you can just create repositories on your local machine.

Will Bickford
A: 

If you don't use it, you will fail the Joel test.

+5  A: 

Absolutely. Home projects is your best opportunity to experiment with version control and get a feel for how they work. You need to learn Subversion (it's the most used by far) and also one of the modern distributed systems - git, mercurial and/or bazaar. If you have anything you can share (even just your .vimrc), sites like http://github.com/ and http://freehg.org/ can help you get a feel for sharing code across multiple repositories.

Update: freehg.org doesn't seem to be working any more, but bitbucket.org is a good replacement.

too much php
That freehg.com is not alive anymore.
jpartogi
+6  A: 

Using source control is also good for backup purposes. If you always check everything in, then you can back up all your source code projects by backing up all your repositories. If you have multiple machines, then you don't have to worry about where the latest version of your code actually is - it's on the repository server.

Greg Hewgill
+1  A: 

Instead of setting up your own local server, you might consider using a free hosted repository (for example http://www.sliksvn.com/). Obviously, this option has both advantages and disadvantages...

Tom Juergens
+2  A: 

Absolutely, it's worth doing. It gives you the ability to try wild and crazy refactorings, and then back out of them with ease if they don't work. It also sets up good habits for if/when you work more collaboratively with a group.

With Subversion (at least) you don't even need to have a "server"- a simple directory can serve as your repository if you access it with "file://" type urls. There's even a free book that contains pretty much everything you need to know to get started:

http://svnbook.red-bean.com/nightly/en/index.html

Limbic System
+1  A: 

I was going to say the same thing that Greg H. already said. If you're like me and have a number of machines in the house, setting up a repository (that's always on, or at least always on when you need it) is priceless. Regardless of what machine you are using, you always have up-to-date code to work with. For projects that require group participation (not uncommon in college/universities and even home brewed projects) you also have the ability to easily share the code with others.

MK_Dev
+6  A: 

SVN requires a server.

More "distributed" revision control systems seem to allow greater ease of use by not requiring a server at all.

Examples:

Setting up darcs for example requires the following:

  1. download binary
  2. ensure binary is accessible through path environmentvariable
  3. darcs initialize
  4. add any directory or files (wildcards allowed) with: darcs add *.cpp (or whatever)
  5. darcs record

To see changes:

darcs whatsnew.

If you decide not to keep the changes:

darcs revert

If you decide to keep the changes:

darcs record

See also: Quick Reference Guide to Free Software Decentralized Revision Control Systems.

qyb2zm302
Subversion does not require a server, you can set it up to use file:// urls which just refer to the repository on another path.
Greg Hewgill
I stand corrected.
qyb2zm302
The differences between centralized and distributed SC is not so much about using it alone, but rather, using it with a team. Going from a team of 1 to a team of 2 is always challenging, but distributed source control eases this tension by giving both coders full repositories to work from, without having to sacrifice the convenience of a local repository, without having to grant access to anything, and without having to adopt a particular commit policy. Team-mates just email diffs to one another, and apply them to their own repositories as they see fit.
TokenMacGuy
I *highly* recommend git. For individual projects, even when you only use one machine for development, it handles branches, tags, etc *much* more nicely than subversion, and it's a piece of cake to set up. In a team environment the benefits are even greater.
David Claridge
A: 

If you're on a Mac, OS X Leopard comes with Subversion installed.

Use it even for 1-man projects.

bpapa
+4  A: 

Not only should you never leave home without it, you should always have it at home.

I think one of the more extreme examples of this was actually given by Linus at the Linux Plumber's Conference this year when he mentioned that he puts everything he works on into git. He downloads a tarball off the internet and the first thing he does is runs git init so he can use things like git grep and other types of tools he's used to. For him, SCM is part of his workflow.

I've also seen this with trac as well. I often will put projects into an SCM system just to allow them to use good integrated tracking tools like that. I try and do this with most of my work.

D.J. Capelis
I find myself doing the download tarball + put under version control thing too. I kept thinking it was overkill but I inevitably need to make changes to get it to build, and want to know what they are.
quark
+6  A: 

Handy uses and arguments for using version control for personal stuff, even beyond development:

CVS homedir (or keeping your life in CVS) - The original "why use version control for non-development tasks", and Subverting your homedir (or keeping your life in SVN) - update when Joey switched to SVN.

Why do you need a Version Control System by Bartosz Milewski What would you say if I told you that I've found a terrific programming editor on the Internet, free for the downloading, with all the great features you find in other editors, except one—there's no "undo." I'm afraid you'd dismiss such an editor without even trying it.

Stobor
A: 

That was the question I've always been asking myself. For may projects, bigger or smaller, I used a yyyy.mm.dd directories system. After completing one of the stages, I copied a directory and started next step of development. In the end of the day I had like 20 directories.
At the moment I'm working on some project and from the very begining I decided to use some of the version control system. I chose bazaar. This tutorial will teach you how to use it in just five minutes. I keep everything in my project directory and sync it with external hdd.
My supervisor often changes his mind about the software, so bazaar saved my day quite a few times.
My conclusion is, that no matter what kind of vcs you use, I will help you a lot.

ps. You can also take a look at the launchpad to keep your files in some external place.

chriss
+2  A: 

An svn repository is incredibly easy to setup ( you can configure a local repository with a file:/// url ), and if you get used to source control administration and good practices, your experience will be incredibly valuable when you'll get to join a team. You may want to try trac to manage your project, too. You'll be able to easily browse your sources, get nice diffs between revisions, keep your notes in a wiki and manage your todo list though tickets ( to list the bugs to fix and features you'll add later without having to keep it in mind all the time ).

Soon you'll realize the question of whether using a source control or not is as silly as asking if you need a database, classes or even procedures in your pet project!

vincent
+1  A: 

Revision control is great because it allows you to be more experimental, knowing that if your experiments fail, you've got something to fall back to.

dreamlax
+2  A: 

I haven't read all the answers, but I did a quick search and Unfuddle wasn't mentioned. It gives you a free SVN repository which is perfect for small/home projects (I think about 200mb of storage).

ripper234
+1  A: 

I'd suggest checking out http://www.projectlocker.com. It's what I use, and from what I've seen they have the best free account for a SVN server. The free account allows for 500mb of space, and unlimited projects.

Eric Anastas