views:

90

answers:

6

We are currently using CS-RCS Pro for source code management, and are looking for to replace this due to performance issues. It is based on client side file access with no own protocol, which makes it painfully slow to use over a slow VPN line since it always rewrites the whole history of a file. It does however have a GUI client which is very simple and gives a great overview.

We have three main requirements in a SCM:

  1. Fast. It must have a server side service or some other smart way so working with files with a large history is fast.
  2. A good Windows GUI client (not Explorer shell integration, not VS or Eclipse IDE integration, not web based), so working with files and branches is easy.
  3. The possibility to have several branches checked out at once in different directories.

We also need the backend to be Windows based.

Does anyone have a recommendation of a SCM which fulfills these requirements?

A: 

Team Foundation Server

SourceGear Vault

VisualSVN (SubVersion) plus Ankh

Mitch Wheat
visualsvn server + ankhsvn + tortoisesvn is scm heaven. though reading the gui part, these are all ide or explorer integration... there is *alot* more to the tortoise gui than the shell integration though.
nathan gonzalez
TFS and VSN+Ankh only makes sense together with Visual Studio if I understand correct. I heard about Teamprise just after it was acquired by Microsoft, if they produce a stand alone GUI client we might give TFS a try.SourceGear does look a bit interesting though, I'll check it out.
Anders Öhrt
Would the downvoter please leave a comment. Thanks.
Mitch Wheat
+1  A: 

though i've not used it for a real project yet, kiln might meet those requirements. its based on mercurial, a distributed scm with a lot of promise in my opinion. also, its made by fogcreek, joel spolsky's group, and they almost always put out amazing stuff

nathan gonzalez
I'm following Kiln with interest, but it looks like it is web based. I'm a bit confused about the technical details at the moment, I think I'll contact FogCreek for more info.
Anders Öhrt
the web based interface is top notch, and is complemented by tortoiseHg and a visual studio plugin. you should download and use it for a bit. really neat. mercurial is the confusing part for me, but i'm sure it'd come with time.
nathan gonzalez
Kiln is just a web frontend for mercurial. However, merc is excellent and tortoiseHG is as good as any other GUI client
Ed Woodcock
@Ed, i'd disagree with the word 'just', as it's alot more than just a frontend, adding really significant features like built in code review not found in mercurial. but yes, it is based on mercurial.
nathan gonzalez
+1  A: 

I recommend Git

It misses point number 3, but it does support sub-modules (nested repositories).

Daniel Beardsley
The way I understans it, git has this nailed as any other branch capable SCM. I understand it that a developer has a "HEAD" version, "UAT" version, "CustomerA_SiteX_Production_Patch27b" branch in different directories for quickly responding to requests in different branches. In dutch we call this "Branches Blussen" because it sounds like fire-fighting.
Peter Tillemans
And which GUI client would you recommend? That's the most important part for us, really.
Anders Öhrt
Git comes bundled with a great GUI client **git-gui** I usually use the gui client for day-to-day stuff but often resort to command-line when I need to do some some fancy history-rewriting.
Daniel Beardsley
A: 

I think that condition 1 is self contradicting. It are the trips back and to the server which makes SCM's slow.

that being said, I have heard very good things about Perforce regarding speed.

Now I am just going to volunteer some unwanted information.

  1. Distributed VCS which only need to go to the server to "share" code are extremely fast and work very well in trains, planes and automobiles.

  2. GUI clients will make working with branches not a lot easier. Most complexity is inherent to having multiple configurations active at once. In fact I think a separate GUI client (as opposed to a well integrated one) will make it more difficult because it will not fit very well in the developers workflow causing branches to live longer.

GUI clients are great for people who use the VCS infrequently and beginners, which is probably not the user community for whom to optimise the tools. Also beginners do not stay beginners very long.

We have a similar debate in our company currently raging, and I know from experience that my viewpoints are extremely unpopular.

Peter Tillemans
PerForce is fast. It used to be the fastest. Might still be so...
Mitch Wheat
Condition 1 (speed) is not self contradicting, a single small trip to the server can be fast. However, some SCMs (like our current) always reads and rewrited all history when you do a checkin so a 1 character change in a file with hundreds of revisions can cause a multi-MB write. Even worse for binary files, where the history is not stored at deltas but as whole files.We currently work fine with branches and have evaluated and rejected going the distributes way since it would not help our development.Never the less, I appreciate the answer. =)
Anders Öhrt
A: 

Have a look at http://www.assembla.com/ it has free SubVersion and Git repositories and the paid for version has loads of other tools. Makes it easy to try out the repositories without installing them locally.

Mark Redman
The web site is a bit heavy on the marketing side and light on the technical. We don't want a hosted version (for speed, and reliability reasons), but Assembla does have a self hosted version. However, I cannot find out much about the "beatiful code browser" client they have. Sounds good though, I'll put them on the list to check out (pun intended).
Anders Öhrt
A: 

Definately use Git. For the win32 front end, try TortoiseGit from code.google.com/p/tortoisegit

For centralized-like workflow on windows, see http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

In addition, I'd suggest looking at github.com for hosting of git repositories with a very nice web frontend. They offer private repositories, too.

See also: git-scm.com (for the official git) and progit.org (a free book about git - also available as print version from amazon)

About point 3 you made: git supports multiple branches in a single working directory and this is really way superior to each branch has it's own working directory style. Use "git clone" command if you really want additional working directories.

Learn about "git stash" and "git checkout" (possibly also "git checkout -b xyz" and "git merge") and you'll be better with just a single working directory. Git does support the other style, too, but it really is worse.

Mikko Rantalainen