views:

323

answers:

9

Ok, I have read the other threads I could find on this subject, but still I think I want to beat this particular dead horse a bit.

The situation I am in is this. I currently use Perforce locally on my computer at home and on my computer at work and I am very happy with it. But I want to share the SCM Love with my co-workers and we are about to (maybe) add a third developer. With the inclusion of a third person, we cant continue to use the free version. I am not adverse to paying but $900 a seat is too steep for the company I am working at.

Now, I know there is a strong following for SVN here on StackOverflow, and I respect that. But when I looked into it previously, I did not care for certain aspects. For instance in Perforce, if I try to check in a file that needs to be synched or merged, it will prompt me to do so before checking in, and I get a visual tool to control the merging. IIRC in SVN when you check in files it will automatically merge for you which may not have quite the same consequences that you are expecting. I freely admit I may be remembering this incorrectly though.

Also, I seem to recall that SVN is folder based and not file based? This could be really scary in my current work environment where I have inherits some apps with no folder structure.

And of course, it absolutely has to plugin to VS2008.

Given those requirements, would you still recommend SVN or would you recommend another product?

Thanks

+8  A: 

In Subversion you don't merge when you commit - you merge when you update. However, you have to be up-to-date before you can commit. It's a subtle but important distinction.

Subversion will merge for you when it feels confident in the change, but will leave appropriate conflicts alone to be merged manually. I haven't seen many bad merges performed automatically.

And yes, I'd still recommend Subversion if you need VS support (for which I'd recommend VisualSVN, personally - not free, but very cheap). I like Git, but it doesn't have good VS integration that I'm aware of.

Jon Skeet
Hey Jon, to clarify then, in SVN if you are out of synch, you would update locally, forcing a merge on your system. Then (saying you do not need to re-edit the files to tweak the merge output) you would commit the files to the repository?
Goblyn27
Precisely. SVN will tell you which files it's merging, and it's up to you to make sure the changes are OK (as it would be in any VCS).
David Thornley
I use ankhsvn at home and it is free.http://ankhsvn.open.collab.net/
David Basarab
I used to usew AnkhSvn but tried VisualSvn and prefer it. Just slightly simpler.
Jon Skeet
I looked at VisualSvn but I decided that $49 was something I wasn't willing to spend for at home development.
David Basarab
Another downside to VisualSVN is it needs TortoiseSVN for some features, and i don't want Tortoise on all my context menus on my hope pc. To that end Ankh wins for home dev for me. The Free bit is nice too.
Pondidum
A: 

SourceGear Vault integrates perfectly with VS 2008, and does everything you ask for.

$249 per seat (volume discounts available), and it'll prompt you if files need merging. Plus, it's got a great Diff/Merge tool.

It's free for a single user, so give it a shot and see if it meets your requirements.

Chris Doggett
Hmm, $249 isnt a bad price. Certainly much better than the $900 my beloved Perforce charges.
Goblyn27
The great diff-merge tool mentioned here is also a free download from SourceGear which you can use with other SCM systems :)
Bert Huijben
+1  A: 

Also, I seem to recall that SVN is folder based and not file based?

svn stores a .svn repository for each folder but you can add individual files within a folder. It also has good rules for automatically finding/ignoring files based on extension.

Ankhsvn does visual studio integration, personaly I prefer tortoiseSVN integration with explorer but that just depends on how you work.

ps. On the server side you can have SVN store changes in individual files or in a BSD type database, checks the docs for which is best for you, but this doesn't effect the client side.

Martin Beckett
+1 - We use the same tools. works great!
Mat Nadrofsky
+1  A: 

see prior thread for discussion of git + visual studio: http://stackoverflow.com/questions/507343/using-git-with-visual-studio

klochner
i switched from svn to git last year and have been really happy with it.
klochner
A: 

I agree with Jon Skeet. (doesn't everyone?!) - ;-)

SVN is still a great choice for you. You can use a visual tool like TortoiseSVN to handle your interaction with SVN and including a repository web client like ViewVC is a good option if you want to access/browse the repos from your browsers.

There is a pile of extensibility built into SVN as well. You can add all sorts of custom actions to any pre-commit or post-commit events (and many more).

Visual SVN as Jon mentioned or Ankh SVN are both viable solutions for Visual Studio integration.

Mat Nadrofsky
+1  A: 

I currently use Perforce locally on my computer at home and on my computer at work and I am very happy with it

Looks like DVCS to me (Distributed Version Control). Git or Mercurial could definitively help, in that they would scale nicely with the number of developers. Just define a central repository. Git actually can work with VisualStudio

in Perforce, if I try to check in a file that needs to be synched or merged, it will prompt me to do so before checking in

It is so when working on the same file on the same branch. With DVCS tools, you would create your local branch and control whenever you want to merge other works in your current branch (rebase) or just merge your work to a common branch (merge).

So I would recommend a DVCS tool rather than a central repository tool in this instance.

VonC
+1  A: 

We are a development shop and used MS sourcesafe for a long time before giving up on it because of a lot of problems when you get beyond a certain size.

Now we are using svn exclusively. I am yet to see too many incorrect automatic merges, but it detects conflict if same part of the file is changed in both places and lets you merge manually. I am interested to know if you can stop automated merge and have full control.

The merge resolution window is really good and it will allow you to merge manually in no time.

We use Ankhsvn on vs 2008 and sometimes tortoise svn. We tested the visual svn but found that Ankhsvn is good enough (although I am not sure it supports file renaming and merging history yet!)

Samuel
+2  A: 

I'm a long-time Perforce user and absolutely love it, but I can appreciate that the licensing fees might be a bit too much for a small company.

As I see it, the main reasons for using Perforce are:

  • Mature merge tracking. SVN isn't quite there yet.
  • Superb support team (I seem to always get replies within the hour or so)
  • Speed.

Having said that, I think that SVN would be the easy way to go if you are willing to lessen your expectations a bit in the above areas, at least for the time being. I'll probably get flamed because of that statement, but so be it. You'll just have to decide what you are willing to pay in terms of time vs money - if you are a heavy user of branching and merging it just might be that the Perforce branch/merge capabilities will pay off.

Another thing to consider if you are developing OSS is that Perforce actually offers free licensing for Open Source development.

Cwan
A: 

Re-Perfoce vs SVN : Mercurial looks quite good if you want to have the Merge Tracking capabilities from Perforce, and everything else from Subversion.

Big