views:

662

answers:

6

I'm currently researching new source control options for a team of 10 developers. We do .net development in Visual Studio 2008. We currently use VSS for source control.

We are looking for a centralized source control solution(non-distributed), with a nice Visual Studio plugin. My manager has recommended Plastic SCM and I've always heard good things about Subversion. I'm trying to decide if we should adopt Subversion or Plastic SCM.

There isn't much information out there about Plastic SCM (except what they've written) and I was wondering if it would be a good solution. They make it sound as if branching is much simpler.

Subversion on the other hand has a robust, mature community, and it has been thoroughly field tested.

What are the pros and cons to these tools?

Also are there any other tools that you could suggest?

Thanks

+2  A: 

I in advance asks excuses for my suggestion, but you can use a Distributed Version Control System in a centralized manner. It is just matter of politics inside your development team.

For instance, Mercurial allows pulls and pushs via web service very easily through TortoiseHG.

Or maybe you can try a mix solution, centralized (subversion) server, and a local branching for each developer using git, which I have to say, it's very easy.

For Subversion <-> VStudio, I have used Ankh and I find it very easy to use. For Git <-> VStudio, I have used GitExtensions and the integration is not so good as one can find for example with a Tortoise Shell extension or with Ankh, but you can try it yourself.

Jhonny D. Cano -Leftware-
I really love the idea of distributed source control, my management however isn't impressed.
jon37
Jhonny pointed: "Or maybe you can try a mix solution, centralized (subversion) server, and a local branching for each developer using git, which I have to say, it's very easy" -> that's exaclty what you get "by default" with plastic scm
pablo
I also use AnkhSvn (http://ankhsvn.open.collab.net/) for Subversion <-> Visual Studio integration. It works pretty well, though sometimes I drop into TortoiseSVN (http://tortoisesvn.tigris.org/) if I need to do something complicated. It's nice that the tools can work together.
Chris
+2  A: 

I haven't used Plastic SCM before, but Subversion worked very well for me in the past. If you're not bound to a free solution like SVN, you might consider Team Foundation Server. Beside Version Control, TFS offers additional nice features like work item tracking, integrated reporting ... As you can imagine, the Visual Studio integration is just great :)

Andre Kraemer
How is branching / merging compared to SVN? I'm worried about using another Microsoft source control solution since they got vss so wrong.
jon37
TFS is very expensive, and the source control IMO is very much like VSS. I don't think it's worth the investment.
NerdFury
I agree that TFS could be very expensive, which depends on the contracts you have with Microsoft. However I can't share your point that the source control is like VSS. VSS uses a file system approach which may lead to corrupt repositories in large projects, where as TFS uses a SQL Server Database as a backend. Regarding Branching, it worked fine for me. Far better than in VSS. I'd suggest to download the free evaluation Version of TFS which can be found at microsoft.com. It's a complete Virtual PC Image with TFS, Visual Studio, MS Office and some samples included.
Andre Kraemer
I guess it is VSS like to me in that it requires the same check out - check in semantics rather than edit - merge semantics. I don't like having to wait for locked files, and I never thought that it worked well to allow multiple people to checkout. This was especially painful when adding files to project files, and needed to wait to get an editable version of the project file. My experience with TFS is as a solo developer on a project, so the need to checkout wasn't a hinderance, but I have bad memories.
NerdFury
You're right. The check out - check in can be configured to work as in source safe (lock on check out and get latest version on check out). You can how ever (and that's what I'd advise) allow multiple checkouts without locking any files and merge the changes on check-in. Check-Out on edit is disabled by default. We worked in that way on a project with about 15 devs and it worked great.
Andre Kraemer
TFS lacks any credible sophistication in branching strategies. SVN is very CVS like and Perforce like, and TFS is more similar to those two dinosaurs than some of the newer, more powerful and elegant solutions such as Accurev, Plastic SCM, or Clearcase UCM. To many of these older version control tools, copying a directory of files is creating a branch, and directories are not themselves versionable elements.
polyglot
@Polyglot - WHA??? Are you kidding me? TFS has whatever branching strategy you need, and it does not 'fileystem copy' when you branch. Its actually just maintaining changes between branches in a db like Andre mentioned. I was able to put together a branching and merging strategy for some very complicated SDLC processes, with very little issues in TFS (mostly learning curve).
StingyJack
+3  A: 

Using VisualSVNServer is an easy way to get Subversion up and running in the Windows environment, and they have a tool that offers Visual Studio Integration for about $50/dev. When I worked for a company in the middle of a switch, the decision was between SVN and Perforce. We ended up going with SVN because I was able to get it, use it, test it, play with it very easily. We could get WebEx presentations of Perforce, but it was hard to learn without buying their book. Also I argued it was a better tool for developers to know because so many open source projects were on it, and it was a more transferable skill. Plastic SCM is not likely to be used if you were to move on to another position.

NerdFury
A: 

Another alternative for VSS is SourceGear Vault ('vss done right'). Big plus is that it works (unlike VSS).

PlasticSCM seems to be a distributed solution, while svn (and VSS, TFS, ...) are centralized. If you want alternatives for commercial distributed solutions, you may want to have a look at git, mercurial, bazaar.

jeroenh
+1  A: 

I’d like to add this answer for everyone still to make their choice.

I’m developing in C# with VS2008. I’m working in a team of two developers. We used to have no source control (horror), then we used Subversion (okish) and then we switched to Plastic SCM (good).

My Comparison Matrix:
(please note my Windows-user-point-of-view, YMMV)

Pro Plastic:

  • Windows Application -- Nice and intuitive UI
  • Good learning videos (you can learn all you need about two hour’s time)
  • Standard tasks are all very easy to do: switching to another branch, getting an older version of some file, diffs, merges.

Contra Plastic:

  • Costs money (free for open source; there used to be free commercial 2-user licenses)
  • No real server / admin program: I’ve got no idea where exactly on my disk the data is stored; it’s all hidden away from me. Now, how do I backup my repository? The only “solution” I know of is using the client’s replication feature and replicate the repository to your localhost server. (I haven’t done this yet.) [EDIT: Take a look at the comments for a real solution.]

Pro Subversion:

  • Free
  • Open Source
  • Huge user base

Contra Subversion:

  • Subversion can’t really handle file renames. You can work around, but it’s not (yet) a native feature.
  • Things like moving a directory might corrupt your working copy.
  • Tortoise SVN is little more than a façade for the command line svn.exe. For many operations you still need to know the command-line commands and their switches.
  • Tortoise SVN severely slowed down my Windows Explorer right clicks.
  • Merging takes more time when there are conflicts. You get several copies of the same file and then you have to delete all the versions you don’t need (leave Visual Studio for that), or you get conflict indicators put into your code, which make your code uncompilable until you removed them all. In Plastic SCM, on the other hand, the merge operation opens a window similar to WinMerge and you can just click blocks of code you need to resolve the conflict.

Hope that helps. If you need any other specific information, please let me know.

Felix

Felix Alcala
In fact doing back ups with Plastic SCM is very simple: just use the methods you're used to with the backend of choice (SQL Server, MySql, Oracle, Firebird...)In case you're using Firebird: simply go to your server location and backup the .fdb files (databases). Simple! :-P
pablo
@Pablo: I didn't specify a backend (or can't remember). I certainly didn't install MySQL or any other database myself. How can I find out which backend Plastic uses by default/at the moment and where it is? Thx.
Felix Alcala
@Felix: by default Plastic ALWAYS uses Firebird. This way you can install it in less than 60 seconds (no need to install anything else). If you're using Windows there won't be database server as such, the plasticd process will have one embedded. Then, by default, the database files (*.plastic.fdb) will be located at the server's install dir. You can put the *.fdb at other location but then you'll have to create a simple db.conf file pointing to the new path.
pablo
A: 

Take a look at the performance here. It compares both systems under really heavy load (1, 10, 20, 50 and finally 100 concurrent machines against a single server, which is much more than 100 real users, for sure).

pablo