views:

294

answers:

8

I am a release engineer for a team of 35 programmers. We are working on PHP, Java, C# and SQL. We currently use Subversion, which has worked okay for about a year. We are going through a phase where conflicts are becoming more and more common. Our application footprints are growing, so performance is becoming an issue for checkouts and commits.

I'm wondering what commercial or FOSS version control systems and client software people can recommend that fit my profile: - Centralized repo - Simple merging - Fast exports, merges, checkouts - Conflict resolution

Thanks for you help!

; ) .randy

-- Added 2009-04-16 @ 06:21 PST

More info: our repo footprint is ~ 6GB. We've looked at Git and Bazaar. Great features and reasons to use them. We want a centralized repo.

+8  A: 

A common misunderstanding is that distributed version control systems like git or mercurial are no good for centralized repos. With that said I recommend you look at git if you haven't already.

Jason84
+2  A: 

Perforce is my favorite.

JP Alioto
+1 agree, had VSS before and it Perforce is way better.
Anders K.
It's not difficult to be way better than VSS, in fact it would be difficult to be worse.
Kevin ORourke
What makes Perforce better than Subversion?
In the years we used Perforce I can only think of a couple of occasions when the automatic merge failed.
ChrisF
When that happens, the manual merge and compare tools are excellent out of the box.
JP Alioto
+2  A: 

While it is true that Git is a good choice, do not forget that a "growing application footprint" entails other issues you will have to deal with, no matter what SCM you end up using.

Namely:

  • Application Architecture in order to divide your application into more manageable and independent (from one another) "modules" (or components)
  • Merge workflow: your SCM need to deal with 3-way merge, while avoiding sideway-merges. This is especially true in maintenance phase, when you have both a release in production to maintain, and a new development for the next version to make.
  • Delivery storage in order to easily query your deliveries into a test environment, homologation environments, production environment...


Regarding the merge feature, Perforce or Git are better than Subversion, because they allow you to merge any subtree you want, while memorizing the merge information, and with many merging strategies (ours, theirs, ...).

Even in its latest 1.6 version, Subversion does only support reliably merges from the root directory of a branch (you can merge subtrees, but the log will not be accurate for merges to subtree outside the ones you have currently checked out)

VonC
A: 

We have been happy with Starteam from borland. The checkin/checkout operation is fast even from remote systems and it provides different views and promotion states as well.

Premkumar
A: 

Whichever way you go, make sure you add FishEye to it.. helps with managing your code as the complexity grows..

Currently supports SVN, Perforce, and CVS.

A: 

Check:

  • Accurev
  • Plastic SCM. Look at its 3D tree and branch explorer, and explore the merge links there
pablo
+1  A: 

Bazaar can be used in many different types of workflows. See this article about using it in a centralized workflow.

Mladen Mihajlovic
+1  A: 

There's no reason why you can't have a centralised repository with Git. Git supports any workflow.

John Topley