Why I like Perforce

This post is in response to Nathan Mische's post on Perforce. I've been using Perforce for about four years, and during that time, I've developed a real love/hate relationship with this amazing and annoying tool. Perhaps I should explain...

Amazing

Whatever kind of project you are working on, Perforce can accomodate it. Got a simple website? No problem. Just drag the site folder into Perforce and it's instantly added to version control. Even better, the gang at Perforce have put together an amazing plugin for Eclipse that allows you to handle almost all of your normal workflow without leaving Eclipse. By far, my favorite feature in Perforce is the way is handles branching (integration in Perforce-speak). Let's pretend for a moment that you work for a company that uses multiple environments: Development, Testing, Staging, Production. And further, your imaginary company also has to deal with auditing, validation, Sarbanes-Oxley, etc. This means that you can't just copy your code from one environment to another as you please. Every change must be tracked and logged. With Perforce, such auding is easy. Just set up branches for each of your environments. When you need to promote code (from staging to production, for example), all you need to do is tell Perforce to integrate from the Staging branch to the Production branch. You can even get more granular and just integrate a specific set of changes. It's all up to you.

Annoying

The same feature that makes Perforce so amazing also makes it very annoying. In a word, INTEGRATION. Once you start integrating changes between branches, you will quickly be tempted to do more complex integrations. Well... my advice to you is just say NO. Keep things as simple as possible. The reason? Odds are that you will encounter a situation where you need to roll back one or more files to a previous version. If you keep your changes as simple and specific as possible, then a rollback is no problem. Just integrate to the version prior to the one where you made your changes. However, if you do a lot of changes and then need to roll back, Perforce will force you to merge you previous changes by hand. Take the word of someone who's done this. It's not fun.

Summary

Perforce is truly a coder's version control system. Just about anything you throw at, it can handle it, either out of the box or through the enormous number of third-party plugins, scripts and triggers. It's well worth the time to learn, and best of all... It's Free!

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Contact Blog Owner