tags:

views:

3937

answers:

12

My team has been using SVN for a few years. We now have the option of switching to Perforce.

What would be the benefits (and pitfalls) of making such a switch?

+21  A: 

I currently use both on different projects.

  • The perforce branching mechanism is superior.
  • The perforce conflict resolve tool is better.
  • I really like perforce's strong notion of a changelist.
  • Perforce seems faster.
  • It's easier to set up and get running.
  • Some of our members really like the MS Office plugin for perforce, I'm on a Mac so I can't use it.

But

  • The SVN clients are better, especially the eclipse plugin.
  • Perforce is more expensive.

These are merely opinions, so perhaps this is a poor answer :)

If I was already using one or the other, I'd be very hard pressed to switch since neither seems to offer really significant benefits over the other, but the disruption in switching could be large.

Marc Hughes
Can you please elaborate on why the Perforce Eclipse plugin? we're currently evaluation the platform and I couldn't find specific feedback about it...
Tomer Gabel
+4  A: 

Proper branching and making branches part of the namespace are the biggest benefits that I see in Perforce. Merging is easy. I see no downside in moving away from Subversion.

janm
+16  A: 
  • P4 keeps track of your working copy on the server. This means that
    1. Large working copies are processed much faster. I used to have a large SVN project and a simple update took 15 minutes because it had to create a tree of the local working copy (thousands of folders). File access is slow. P4 stores the information about the working copy in the database, so any operations were always near-instantaneous.
    2. If you mess around with your files and do not tell the server, you are in trouble! You cannot just delete a file - you have to delete a file with the P4 client so the server knows. Note that if you locally delete a file, it will not be downloaded again on successive updates because the server thinks you already have it! When lots of this happened and I ended up wildly out of sync, I usually had to resort to cleaning out my local copy and downloading it again, which could be time-consuming. You must be careful about this.
  • The Explorer shell extension client (think TortoiseSVN) sucks and is completely unusable.
  • There are two GUI client applications which offer the best functionality: P4Win and P4V, of which P4V is newer and more easy to use but not as feature-rich.
  • There are Visual Studio and Eclipse plug-ins, which work relatively well, although they do not have many advanced features.
  • Generally speaking, P4 offers much less features than SVN and is sometimes downright confusing.
  • Working copy definitions were nice and flexible. I believe P4 is superior to SVN here: you can define masks for working copy folders and create all sorts of bizarre trees, so you download only what you want to exactly where you want, without having to manually futz with multiple checkouts. This came in very handy when I had gigabytes of stuff on the server and only wanted a specific subset of it. I used SVN in a similar situation with much more hassle.
  • Branching under P4 is... odd. Branchsets and different kinds of branches and confusing UI. I do not remember much details about this, unfortunately.

Other than that, it's pretty standard.

I recommend you keep SVN unless you deal with huge codebases or hate the .svn folders littering up your filesystem. SVN+TortoiseSVN is far more confortable for most situations.

Sander
Regrading point 2., P4V has a "Reconcile Offline Work..." option that helps a lot with this. Also, perhaps Sander hasn't used the graphical clients lately, but P4V is MORE feature-rich than P4Win. Perforce is abandoning P4Win and concentrating on a single, cross-platform graphical client, P4V.
raven
Yeah, my P4 experience dates some years back.
Sander
BW. Tortoise is better nowadays, and the large working-copy bug has been found - will be fixed soon (and it only applies to Windows and NTFS partitions). Not fixed yet though.
gbjbaanb
Seriously - I am not quite sure your basis for saying Perforce has fewer features than SVN. And even if it does (or does not), how does that really matter? Also - branching is what Perforce does exceptionally well. Every other tool I have used really can not even remotely compare to the branching and subsequent merging capabilities of Perforce.
Goyuix
+2  A: 

I used SVN, not a lot, just to try it out. I used Perforce for about three years. I thought it was great. The customer service was brilliant, very fast to resolve a problem that err turned out to be just me being daft, and they even implemented a feature I suggested.

Some other developers and especially non developers who had to use it found it a bit tricky to learn to use, especially when it came to defining a client-spec (a map of folders on the server to local folders).

I found it to be very quick to get files in and out of, and to be very reliable. I think most developers I worked with really liked it once we'd got used to it. We were using Visual Source Safe before we switched though, so, pretty much anything is better than that.

Downsides, it costs money. I believe SVN is very good system, as SVN is free, I would think you'd have to have a compelling reason to switch especially as Perforce does take a while to learn. If SVN is doing the job for you, and you haven't got any complaints about it, I would suggest you stay with it, and save the money for a rainy day!

Scott Langham
A: 

I have used both, and in my experience Perforce makes a lot of sense if you have a big team and/or codebase; otherwise I would pick SVN - it is easier to set up and maintain.

Nemanja Trifunovic
+2  A: 

Has your team evaluated Git? It has features analogous to those available in Perforce, but is free (FOSS).

Either is a great alternative to SVN when working with a large team.

Douglas F Shearer
Quite frankly I tend to agree with this. As far as a more traditional code repository, nothing can compare to Perforce. Distributed systems like Git or Mercurial solve a similar, though slightly different variation on the code management problem and are well worth a look in my opinion.
Goyuix
A: 

The main benefit of using subversion over Perforce is in my opinion ability to edit things off-line and simultaneously with your colleagues.

If the data infrastructure is loosely bonded (there is off-line time), svn rocks. You can do a lot even if the server would not be reachable. Perforce essentially requires an always-available server connection.

Disclaimer: my info on Perforce is old, used it for a while in 2005-06 before fully switching to svn

akauppi
Multiple people can edit the same file in Perforce, and have been able to do that for a very long time. The second one to submit must merge the earlier changes.You can change files and when you get connectivity you can do "p4 diff -se | p4 -x - edit". sync/resolve if necessary.
janm
When I need to work offline, I'll go ahead and edit any files needed.Then when I connect, I open everything for edit, then do a "revert unchanged files" and I magically get just the files I've touched in a changelist.
Marc Hughes
Perforce has supported disconnected work way before 2005-06. There's a Technical Note at the Perforce site describing the recommended approach to working disconnected: http://kb.perforce.com/UserTasks/WorkingDisconnected
Milan Gardian
+4  A: 

I use perforce at work, svn at home.

The perforce GUI is pretty nice, but only once you get used to it. It definitely has a learning curve, when non programmers start using perforce it usually takes some time until they get the concepts.

Tortoise is awesome, it's very easy to use. My lawyer wife subversions all her documents using it ;)

Branching is easy in perforce. In fact so easy, that people branch for not too much reason. Then you integrate because you branched. It can quite easily become the only thing you do.

Svn is integrated in more products. At least more products that I use. It's a great advantage, because if you have to use eithere external to your development environment, they both get clunky.

Every once in a while we have problems with perforce where it thinks that your local copies are up to date, but they are not. Then you have to force synce, then if it's still no good, delete your local files and resync. Never had such issues with svn. This is actually a huge problem as you don't even know you are working on an old copy.

Another thing to think about is why you want to change. If you have a system that works and everyone's familiar with it and happy with it, why replace it?

lajos
+3  A: 

On the Perforce website they have a paper comparing the two: P4 vs SVN

Obviously, given the source, you have to realise that it stresses the advantages of Perforce over SVN, but it is still a useful read. You never know, one of the benefits may well be the killer item that your team could benefit from given your own unique circumstances.

I would certainly recommend Perforce for a number of reasons already covered in other answers, but I'm not in a position to offer a comparison with SVN having never really used it.

Greg Whitfield
+1  A: 

You can edit things offline in Perforce if you want. Your worksapce defines if files are readonly or writeable, so you could make them all writeable, hack away and then ask Perforce to figure out what needs to be checked in.

Better to have files readonly and check out what you need so others (and yourself) know what you have been/are doing.

The better system for you depends on what your requirements are, if you have no requirements then Perforce wins.

Who uses Subversion? Small non-commercial teams Cheap or small commerical teams

Who uses Perforce? Google Sony Samsung nVidia Symantec

A List of public customers of one of the subversion clients (VisualSVN) is available on http://www.visualsvn.com/company/customers/
Bert Huijben
A: 

Perforce licensing slides down in cost as number of seats goes up, as I recall. So it's not exactly $900 per seat. It's also a server-based license; you pay for total number of human developers using it, not per machine client using it. So, if you're a shop of 200 people, the 200 seat license lets them all use perforce, even from home.

Epu
ie 200 named users. That's what people usually refer to as 'per seat'. 200 concurrent users is often referred to as 'per server'. (Microsoft's terms for window server licencing)
gbjbaanb
A: 

As of recent versions, Perforce has a new feature for shelving changes:

Shelving is the process of temporarily storing work in progress on a Perforce Server without submitting a changelist. Shelving is useful when you need to perform multiple development tasks (such as interruptions from higher-priority work, testing across multiple platforms) on the same set of files, or share files for code review before committing your work to the depot.

This is analagous to git's branching model which lets you effortlessly switch from one local branch to another when you need to multitask.

AFAIK, Subversion has no similar feature.

More info on the Perforce blog.

matt b