2005 Perforce User Conference

Conference Summary

We would like to extend a big thank you to everyone who attended and made Perforce Software's 2005 User Conference at Treasure Island in Las Vegas a success. We enjoyed meeting all of our fellow Perforce users and Perforce engineers and hearing how they use Perforce at their companies. In addition, we appreciate the invaluable feedback from everyone especially during the Meet the Experts forum, Usability Testing sessions, and more. We hope to see even more Perforce users at our next conference.

Below are the presentations and white papers given by the conference speakers, in order of appearance.

White Papers and Presentations

Changes to P4 integrate in 2004.2

by Jeff Anton, Perforce Software

The 2004.2 release of the Perforce Server saw significant changes to the operation of the p4 integrate command. This presentation covers Perforce's motivation for the changes, how the command operated previous to these changes, how the changes affect behavior, and what operations will likely cause performance problems. This talk describes in some detail the way in which indirect integration credit is computed and how the Server finds indirect integration base revision files.

Merging Branches Using Perforce

by Naveen Patil, Intuit

During the past three years, the need to do parallel development on the QuickBooks product at Intuit has evolved from using a "Main branch for development and a Release branch for Change Control" approach to several streams of development that use the Main branch almost exclusively for integration between branches. The frequency and cost of merging these branches has also significantly increased.

This presentation focuses what has been learned from using Perforce for merging between branches. It discusses a repeatable procedure that has been used successfully to merge between branches, the algorithm Perforce uses to find the "base" and "contributor" versions, the merge conflict resolution procedure and its effect on future merges, and developer best practices that can aid this task. The significant improvements in the 2004.2 release that help with merging are also discussed. Several examples are used to illustrate the decisions associated with resolving a merge conflict.

Large Perforce Installation Details: Perforce at Adobe

by Stanton Stevens and Dave Foglesong, Adobe Systems

Adobe began to migrate to Perforce in 1998. At present, we maintain over 70 systems on 10 servers, supporting over 1800 users and more than two terabytes of data distributed across three continents. This presentation discusses Adobe's Perforce environment, the challenges in managing this kind of installation, and the benefits Perforce has brought to our software development teams.

Performance Update

by Richard Baum and Michael Shields, Perforce Software

Perforce takes seriously the "fast" in its "Fast Software Configuration Management System" tag line. In this presentation, Baum and Shields discuss performance features and fixes introduced since the last user conference. Also presented are a few tips and tricks that may help to improve the overall performance of your Perforce installation.

Perforce Use Model at VMWare

by David Ferguson, VMWare

Discussion of Perforce use at VMWare, including an overview of branching models, merging policies, client maintenance, performance considerations, upgrades, backup/restore support and general cool features will be presented. Learn about our experiences and attempts to scale a build environment designed for 40 developers into one supporting 400 developers less than two years later.

Analyzing File Content History

by Michael Bishop and James Creasy, Perforce Software

Have you ever needed to figure out what broke the build? Or needed to track down when, where, and why a particular line of code was added to a file? Because Perforce stores all changes made to a file by individual line, and because it can cross-reference this information with changelists, the answers to these questions are already stored in your Perforce system. This talk discusses Perforce's powerful tools for extracting and visualizing the content history of files to solve everyday issues faced by Perforce users.

A High Performance, High Reliability Perforce Server

by Shiv Sikand, IC Manage and Angela Marie Thomas, TiVo

TiVo has been able to improve both the performance and reliability of their Perforce installation using the IC Manage Perforce appliance. The appliance consists of a dual redundancy configuration for all hardware components, a Linux kernel coupled with a high performance journaled filesystem and the IC Manage Sync Engine. The Sync Engine is a highly scalable method for managing file updates to distributed workspaces across the enterprise. This presentation describes the overall appliance architecture as well as provides details on the design and implementation of the Sync Engine and documents the performance gains delivered by the system in a real world environment.

Distributed Development with Perforce

by Tony Vinayak, Perforce Software

Distributed software development projects are fast becoming the norm, and coordinating the efforts of far flung development teams is shaping up to become one of the biggest challenges faced by enterprise IT today. It is hard to imagine any sizable development project being managed without an underlying software configuration management tool. This presentation outlines the business needs that an SCM tool should be able to fulfill in order to support distributed development, some common approaches adopted by tool vendors over the years, and the innovative architecture implemented by Perforce Software.

S is for Source: The Role of the Build System in Configuration Management

by Anders Johnson, NVIDIA and Gary Holt, Safeview

Is Perforce really a software configuration management system? What does "configuration management" mean anyway? In this talk, we show that Perforce addresses a subset of the configuration management problem that is not limited to software, and that much of the remainder of the problem is best addressed by build system technology. We also showcase several advantages of Makepp over the leading brand of build tools.

Perforce Backup Strategy and Disaster Recovery at National Instruments

by Steven Lysohir, National Instruments

So you've managed to get Perforce operating seamlessly within your development environment. Performance is lightning fast, distributed development is no longer an issue, and automation is key. Yet what if something goes wrong? Are you prepared for disaster?

This talk illustrates three key disasters at National Instruments, and how we overcame losing a significant amount of source code and valuable developer time by designing our server architecture and backup policy around disaster recovery. I'll share our lessons learned and some helpful recommendations on how to ensure that your time and data are protected in the event of unexpected hardware or "user" error that could otherwise result in unnecessary data loss.

Essential P4V

by Hans van der Meer and Kelly Day, Perforce Software

You probably know that P4V is the cross-platform user interface for Perforce, but how is the program organized? What functionality does it provide? In this presentation, you'll get a concise overview of the Perforce visual client. You'll learn how P4V connects the server and your local workspace. You'll know what tools are at your fingertips, and how those tools can maximize your productivity. You'll learn how P4V is organized and how you can organize it. Find out how P4V can make your life easier.

Scripting with Perforce

by Jeff Bowles, Piccolo Engineering and Stephen Vance, Stellar Advances

This presentation follows the arc that starts with context, (the environment in which a script runs), continues through showing examples of specific techniques (giving strong support to a body of example scripts in Perl/ Python/ Ruby/ P4Perl/ P4Ruby), and illustrates how to create tools to support higher-level purpose: The implementation of specific policies that address organizational needs.

Using P4G.py from the Command Line

by J.T. Goldstone, Ofoto, a Kodak Company

This talk presents a shell scripting technique using p4G.py, a freely available command line filter. Although this technique may be used in many contexts where shell scripting is used, this presentation focuses on using it in the context of the user client space.

The p4 command provides several useful output formats. Beyond the standard text output and -Ztag formats there are the -G (and -R) binary formats. The binary formats are easy to parse and readily handle special cases including filenames with spaces. Furthermore, these flags cause some p4 commands (for instance, p4 groups) to provide additional output. The p4G.py tool parses the binary output and makes it available to the shell script writer.

Writing Triggers in Perforce

by Stephen Vance, Stellar Advances and Jeff Bowles, Piccolo Engineering

Perforce has introduced new trigger types with the 2004.2 release. The triggers allow a new range of capabilities to maintain the development environment, enforce development policies, and implement development support services. In the context of server-side triggers, this presentation discusses several techniques for implementing trigger scripts and examines several purposes for triggers. This topic elaborates upon the Scripting with Perforce talk by Jeff Bowles.

Commit Trigger Example - A Configurable Number of Revisions

by Richard Baum, Perforce Software

This is a brief discussion and walk through of a commit trigger that allows a configurable number of revisions per binary file. The trigger intelligently replaces file revisions with small stub files that notify users of what happened to the original file. It fixes up MD5 hash values to prevent subsequent error warnings by "p4 verify" runs.

The Flow of Change

by Laura Wingerd, Perforce Software

Are your software engineers dazed and confused by the repository that stores their work? Do iterative development, team collaboration, and parallel releases challenge your ability to keep track of evolving software? Is your company's version control methodology more complicated than the software it produces? In this presentation we'll take a step back from specific tools to explore the protocols, conventions, and etiquette of branching and merging. Using the ideal world as our model, we'll see how complicated, procedural rules can be replaced with a handful of simple, easy-to-recognize relationships between fundamental containers of software in development.