views:

506

answers:

9

My code base is getting quite big and it's difficult to organize all the different branches using just directories, I was wondering what would be a decent version control system for my own personal use that works (with little hassle) on Windows?

PS: I'm not looking for hosted VCS like GitHub, SourceForge or Google Code.

A: 

SourceSafe works reasonably well for individual projects. Subversion is also a solid free product, but a little bit harder to setup than VSS. If you want to slam down some cash and have the best experience with Visual Studio then Team System also an option.

TheHurt
Not on Windows. If you download TortoiseSVN, it has everything you need to set up and run a server on Windows.
Thomas Owens
Oh cool. I haven't used SVN in years, and at the time it was sort of a pain.
TheHurt
Yeah. It's really easy. In fact, I was surprised at how easy it was.
Thomas Owens
@Thomas: So, correct me if I'm wrong but TortoiseSVN acts as a "server" as well as a "client"?
Alix Axel
SourceSafe is a terrible idea and should be avoided at all costs. If you want something cheap and cheerful, use git or svn.
Colen
eyze: TortoiseSVN is just a GUI front-end for subversion. It will help you deal with both client and server stuff.
Sam DeFabbia-Kane
-1 **No, SourceSafe is definitely not a good idea**. Not at all. Never.
sbi
Given the fact that your name is "TheHurt", it does not amaze me that you recomment VSS :-)
Michael Stum
A: 

Are you planning on using an external server or running the server on the same machine?

If you are planning on using an external server of your own, I would recommend Mercurial. The distributed system will enable you to branch and continue to check in even if you don't have access to the server (for example, you are writing code on a laptop and aren't on the network with the VCS server).

If you are planning on using the same machine, I would recommend Subversion. It's got solid Windows support and hasn't let me down yet.

Thomas Owens
No, this would all be just local.
Alix Axel
I'm sorry for maybe asking such a basic answer (I'm relatively new to CVS) but would TortoiseSVN do everything that is necessary (act as a "client" and a "server")?
Alix Axel
The way that I have it configured (and I'm not sure if it was an option when I installed or not), but I can use Tortoise to create and maintain the "server side" work of a repository.
Thomas Owens
+8  A: 

If you're setting something up just for yourself, a DVCS (d for distributed) version control system is going to be significantly easier to get set up than Subversion. (Edit: I stand corrected, TortoiseSVN makes setting up a repository easy. Even still, I'd go with a DVCS unless you already know SVN and want to stick with it. I find them much less hassle for smaller projects, and if you're using it on more than one machine the whole thing is backed up on both in case of HD issues.)

Any of Git, Mercurial, and Bazaar are fine choices in general. Git on Windows still doesn't have a native client, although there are ones that work decently through emulators, so I'd not go with that. Mercurial is quite easy to install on Windows (with TortoiseHg for shell integration if you want it), and I believe Bazaar is as well. I'd go with Mercurial over Bazaar if I didn't know either and was going to pick one simply because it's more widely used.

This SO question is about Git/Mercurial/Bazaar on Windows.

Sam DeFabbia-Kane
On Windows, you can't get much easier than Right Click > Make Repository Here...
Thomas Owens
IMHO Git would not be the best solution for Windows.
jpartogi
Thomas: thanks, updated.
Sam DeFabbia-Kane
Ok, so the dilemma seems to be between Mercurial or SVN, I'd guess SVN is more widespread and needs less 3rd parties like cygwin.
Alix Axel
@jpartogi: I have to agree with you, the setup of Git on Windows is way more complex than TortoiseSVN for instance.
Alix Axel
eyze: All you need for Mercurial are Python and TortoiseHg, so that's pretty easy too. You only need cygwin (or something else similar) for Git.SVN is probably going to be a bit easier to learn at first, but the general trend is towards distributed version control systems, which is why I think Mercurial's a better choice.
Sam DeFabbia-Kane
eyze: Do yourself a favor and go with Mercurial over SVN. You only need to install 1 thing TortoiseHg. With SVN you'll need TortoiseSVN, then an SVN server like Visual SVN. Mercurial (and other DVCS) work perfectly for your exact scenario (and many more), wheras SVN was designed only for a client/server environment. Mercurial will be much easier to work with given your setup. TortoiseHg: http://tortoisesvn.tigris.org/
Michael La Voie
@eyze and @Sam: all you need for Mercurial is TortoiseHG. It already has a builtin Python so you don't need an extra Python environment. ps. I have switched to Mercurial from SVN recently and it's a clear win so far - I'm much happier.
utku_karatas
@lame duck - SVN can be accessed via file: as well as svn: or https: protocols, but there's no need when it's so easy to setup svn (via TortoiseSVN -> Create Repository) or installation of VisualSVN.Personally I down-voted this answer simply because in my opinion git is harder to "get" than svn, and nothing comes close to TortoiseSVN for ease of use (that I've seen anyway)
Si
+2  A: 

If you are planning on using branches a bit I would definitely recommend to stay away from SourceSafe. In fact, stay away from SourceSafe period.

I have used SVN, git and Sourcesafe in a production environment and and I would prefer the former two over Sourcesafe. It's just too clunky for my liking and tends to go off on its own and do random things. Then you need Visual Studio integration and that's just a headache.

SVN is just nice and kinda works most of the time. The later versions support a one click merge with comments from one branch to another which is something that was missing before.

git is a LOT faster, it's mind blowingly fast in fact. The learning curve is pretty steep and you would be staring and git documentation and wonder just what the hell it's trying to tell you a lot.

Igor Zevaka
+10 for **Stay away from SourceSafe**. Period.
sbi
A: 

I'm a big fan of Sourcegear Vault. The infrastructure overheads are a bit higher (requires SQL Server Exrpess or greater), but they do provide a free single user license and you can get good support if you need it.

Sam
+1  A: 

Perforce is an excellent commercial VCS that I have used for over 10 years. It has particularly good branching and merging capabilities. I routinely use it internationally over a VPN without problems.

Without a license you have a limit of 2 users (great for personal use / small projects) otherwise it costs $$$

Bruce Ikin
Why was it downvoted without comment? I use Perforce at work, and although I wouldn't use for my personal usage (I prefer DVCS), I find it to be a good VCS, with an excellent GUI and a good Windows integration. So I balanced the downvote... :-)
PhiLho
Yep, tho I wouldn't use it myself, there has got to be something of value in using such expensive software if you can do so for free. After all, Perforce is what Microsoft themselves use (or used to before the Dog Food Police allegedly started insisting they use the TeamFrustration.... I mean, "Foundation" product line)
Deltics
+4  A: 

Subversion

  • Its popular and has a large community.
  • Branching and tagging is easy.
  • Its free and open source.

Also, download TortoiseSVN, it gives you a nice graphical interface and has Windows Shell integration so you can right-click on files and folders in Explorer and perform VCS operations.

codingfloor
+1 gotta luv da turtle
kenny
+1 subversions excellent clients (particularly TortoiseSVN) are a real win under windows.-1 After a few weeks using git, mercurial, bzr or similar I'll never again think of Subversion's branching support as "easy" -- or for that matter "efficient"
bendin
Add VisualSVN Server if you want an Apache based "true" SVN server with all the ease of use of Tortoise.
Deltics
+3  A: 

From your selections, anything but git is good for Windows. But because you are only using it for yourself, something that is centralized like VSS and SVN might be too much as you need to set up a separate repository. So now are down to Bazaar and Mercurial then.

IMHO these two are really good if you are working solo. The difference between these two is Performance and Workflow it supports:

Bazaar

You can configure bazaar to support any kind of workflow you desire. You can make it work with Centralized workflow like SVN and have multiple branches under one repository or you can make it distributed just like any other DVCS.

Mercurial

You can not have multiple physical branches under one repository with Mercurial like SVN or bazaar, but the good thing about mercurial IMHO is the easy user interface that is really straightforward and the performance that is faster than bazaar (although bazaar is getting faster and faster in their recent release).


Between choosing these two, you should narrow down to what is your top priority? Performance or Workflow?

jpartogi
"You can not have multiple physical branches under one repository with Mercurial like SVN or bazaar" -- What? `hg branch newbranch`?
Steve Losh
I think speed of Mercurial for personal small and medium sized projects won't be noticeable comparing to bzr. bzr 2.0 will be released in September 2009 and bzr developers claims it works as fast as hg.
bialix
There is no such thing as "hg init-repository" in mercurial. So you can not have multiple physical branches under a repository in mercurial.
jpartogi
jpartogi: I just read up on what "bzr init-repository" does. As far as I can tell, it is nothing but a round-about way of supporting what Mercurial has always supported: multiple lines (branches) of development in the same repository. Mercurial supports this with unnamed/anonymous branches (multiple heads, perhaps with bookmarks) and named branches (the "hg branch" command Steve Losh mentions). You can split such a multi-branch repository into several repositories and you can combine several such repositories -- everything is possible.
Martin Geisler
I second Martin's point.
quark
+2  A: 

Give a try to Plastic SCM:

  • Superb branching and merging (including full renaming and per item traceability)
  • Very strong visualization options: branch explorer, 3D version tree, statistics
  • Distributed (probably the only DVCS that's fully graphical and designed to work on Windows)
  • Support for multiple database backends: MySQL, SQL Server, Oracle, Firebird...
  • Fully integrated inside Visual Studio
  • Servers can run anywhere (Linux, Mac, Windows)
  • Huge file support
pablo