tags:

views:

263

answers:

4

I have been on TFS since 2005 Beta 2, installed it, admined it, and used it on a daily basis at work. I would like a source control solution for my home projects, written with Visual Studio 2008 Professional, and I cannot afford TFS.

After merging, the big thing for me is the integration into Visual Studio, I have just become too accustomed to running source control from inside an IDE to change right now.

I have done some homework and it has come down to Git and Subversion.

Git

  • has gitextensions
  • popular on SO (active community for support)

Subversion

  • has AnkhSVN
  • popular on SO (active community for support)
  • looks like it has great documentation in the O'Reilly book

At some point I will probably try both just to expand my knowledge on the subject, but until then I am looking for something that just works.

  1. Is either Git or SVN going to feel more natural to me as a TFS user?
  2. Are there any gotchas that I'm going to run into with either?
  3. Is one of the IDE plugins more featured and robust?
  4. Does one have a more active/responsive development team?
+6  A: 

AnhkSVN got off to a rough start, but now it's a pretty nice and stable tool. So I don't think you have too many issues there.

If you're just developing by yourself, go with SVN, since the toolset is a bit better and more mature (at least the last time I checked), and DVCS is probably overkill for a single user :).

Both systems are in active development, and both have active communities that love and support each.

Gotchas? Yeah, the check-out model is gone with both. TFS is optimized for an always-on, check in/check out model, even though checkouts aren't necessarily blocking like they are in VSS. I personally think that once you get used to it, you'll prefer SVN over TFS's source code control. Especially in mobile scenarios where you might not be connected to your home source code control server.

I'm a bit biased because I'm an admitted SVN fanboy, but I would go with SVN for your needs. Something like Git is more appropriate for times when you want to start a project where you want to have contributors merge changes into your stuff in a distributed and disconnected fashion. If you don't need that, SVN is the place for you.

Dave Markle
+1 "Especially in mobile scenarios where you might not be connected to your home source code control server", is probably my biggest gripe with TFS. Take a laptop off the LAN, and as soon as it can't get to the mothership its a world of pain getting things synced.
blu
Working offline shouldn't be too painful if you have 2008. http://blogs.southworks.net/mwoloski/2007/07/30/offline-support-on-visual-studio-2008-source-control/http://blogs.msdn.com/benryan/archive/tags/Offline/default.aspx
Richard Berg
I was going to recommend GIT purely based on my opinion that AnkhSVN was dodgy. If you say it is pretty stable now then maybe I should give it another shot.
Nippysaurus
@Nippy -- yeah, it's worth another look. Go to CollabNet to get the build.
Dave Markle
@Richard: True, it can be done, but IMO the check-in/check-out model is outdated, and is a pretty poor substitute for the lack of intra-team communication, which is why a lot of people use it.
Dave Markle
@Dave: Don't get me wrong, I'm a big fan of git, just making sure TFS users out there don't shortchange themselves when (relatively) friendly workarounds exist.
Richard Berg
+1  A: 

I would vote for Subversion as I think this is going to be the closest. I am only beginning to use TFS, but I think the distributed model of GIT may seem more foreign and take longer to get used to.

Subversion follows more of the modify code and check it in model that TFS uses. Git requires you to check the code in and then push it to a master repository.

In addition, GIT is not properly supported on Windows whereas Subversion is. If this is for home use, I would also suggest looking at many of the free or inexpensive hosted solutions out there like:

  • Github
  • Beanstock
  • unfuddle

If you computer ever goes down, these will keep your code nice and safe.

Chris Johnston
+1 Thanks for the notes about the check in and then push to master for git.
blu
+2  A: 

I've been using AnhkSVN for my solo projects for couple years now and I'm a big fan of it. Once integrated with putty for svn+ssh to access my hosted repository, is as seamless as it gets.

Remus Rusanu
+1 thanks for reminding me how great putty is, and that I can use it with ssh to connect to a repository.
blu
Though running svn over apache is insanely powerful -- you can get integrated windows authentication and autoversioning and wonderfulness with pretty much 1 config file and the server itself.
Dave Markle
@Dave: So I hear :) but my repository is on a $5/mo shared hosting environment so I'm pretty restricted what I can and cannot do :)
Remus Rusanu
@Remus: Truth be told, I use a shared hosting environment for my personal stuff, but Apache in the enterprise.
Dave Markle
+3  A: 

I can speak only to gotchas. While I'm pretty happy with git, I do confess that there can be a lot of unpleasant surprises, like trying to push to a repo with a checked-out working directory, or the fact that when you clone a repo you don't always get all the branches. Subversion is a more mature, organic, unitary design. I personally can't live without the distributed features that git provides, but there are definitely fewer gotchas with svn.

Norman Ramsey
+1 thanks for sharing your experiences
blu