Technical Product Overview

High throughput and a small footprint characterize the software components of the Perforce SCM System. At the core is the Perforce Server (P4D), a stand-alone, connection-based program that manages access to a central file repository, or "depot", on the server's machine. Users access the P4D through efficient client programs, invoked locally on workstations located anywhere on a short- or long-haul network.

File storage in the Depot

P4D stores file revisions in depot(s).
File status and change metadata are maintained in the built-in database.

Typically each user has his or her own client workspace, and may also use other special-purpose or project workspaces. The client workspace specification defines a view, or subset, of files from the repository that are of interest to the user. The workspace itself contains physical copies of the files in its view.

P4D comprises three main sub-components: a request handler, a data manager and a file librarian. The request handler acts as an executive, sequencing actions to carry out client requests and managing communication with the client. The data manager implements database services optimized for multi-user SCM operations. It maintains a meta-database describing the status and history of versioned files in the depot and transactions against the depot. The librarian is a highly efficient file archiver that stores repository files on disk local to the server. It writes text file versions in an RCS-compatible, reverse-delta format; binary file versions are stored in a standard compressed format.

Heterogeneous Local or Wide-Area Networking

Perforce client and server programs are loosely coupled using a simple TCP/IP-based streaming file transfer protocol tuned to minimize network latency. Perforce does not rely on shared file systems such as NFS, and works well on a LAN or around the world. Once fetched, client files are stored on the user's machine; no network access is needed for ordinary user activity such as editing or compiling. All Perforce client programs are compatible with the Perforce server, regardless of OS platform, providing 100% interoperability in heterogeneous networked environments.

Because of its network architecture, Perforce is unique among SCM systems in its ability to function well in wide-area as well as local network environments. In situations where offshore or offsite developers are forced to endure restricted or expensive network bandwidth, the Perforce Proxy (P4P) is available for remote site file revision caching. With P4P, remote users experience quicker response times while still retaining access to real-time updates from Perforce servers.

Portability and Supported Platforms

P4D runs on most Unix and Linux platforms, Mac OS X (Darwin), and Windows Server 2003, Windows XP/2000; no kernel support or special file system is required. Perforce client programs are available on a wide variety of platforms. The definitive list of supported platforms for Perforce server and client programs can be found on the Perforce Downloads page. Please contact us if you need a Perforce client program for a platform not listed.

Tracking Client State and Working Remotely

A Perforce client workspace consists of normal files on the developer's local disk. Perforce records all client workspace activity. It tracks workspace file versions, workspace file locations, workspace file state, pending merges with newer depot files, and pending file submissions. Perforce also indicates to the user which files other users are working on and which changes need to be merged. Perforce can compare client revisions against any revision in the depot, or compare any two depot revisions.

Perforce lets users detach a client machine from the network, work locally, and later resume interaction with the server, with full source integrity.

Atomic Change Transaction Model

In the Perforce model, multi-file changes can be treated as atomic transactions. Database integrity is assured at each server transaction, and each logical change is uniquely and permanently identified. The inherent data aggregation of atomic changes provides an implicit relationship between file versions and external representations of work such as bug fix orders, eCos, or program specifications. Perforce tracks adds, deletes and renames of files as well as updates.

Perforce allows users to selectively synchronize their client workspace(s) with submitted changes as desired.

Parallel Development and Branching

Perforce supports two forms of parallel development. Users can work simultaneously on files in a common code line in the depot. E.g., two programmers may work concurrently on the same project, including working on the same files. Additionally, Perforce supports multiple parallel or related codelines in the depot. E.g., a released product code line can co-exist with an experimental development code line. Perforce tracks changes integrated between code lines and automates merging between code lines, enabling users to work in parallel development or release projects and to reconcile changes between projects.

Perforce provides a uniquely elegant branching model called Inter-File Branching, that simplifies creation and maintenance of related code lines based on the natural hierarchies of the directory name space.

Ease of Administration

The Perforce architecture allows for straightforward administration. Server and client programs require no third-party or add-on software. All Perforce products and upgrades are available by download from the Perforce web site. Perforce's per-user licensing uses no license server and never locks out existing users.

Minimal system administration involves scheduling checkpoints and backups, and monitoring resources. No downtime is needed for backups, as Perforce provides continuous journaling and online checkpoints. The Perforce 3-Day Training course includes coverage of administrative tasks.

Configuration Labels

Perforce provides the ability to store a named specification of the exact configuration of file revisions on a client. This provides a mechanism for labeling a release and for reproducing the exact file configuration needed to build that release. In addition, atomic change transaction records provide implicit labels for points of integrity in the depot, reducing the need for user-created labels.

Reporting and Change Review

Perforce provides for reporting from the depot on the status of client workspaces, file change histories, work in progress, currency of workspaces with respect to depot code lines, and the currency of depot code lines with respect to each other.

Perforce supports a simple, flexible change review mechanism, and offers sample programs for notifying designated teams via email for review and comment upon changes. This same mechanism can be used for automated uploads into defect tracking systems.

Defect Tracking

Perforce maintains associations between "changelists" (atomic change transactions) and "jobs" (externally meaningful units of work, such as bug reports, ECO's or enhancement requests). Perforce "job" metadata can be used as-is for basic defect tracking, or in conjunction with independent defect tracking systems for integration with external processes (see Defect Tracking with Perforce).

Flexible Client API

Perforce supports a client API, making customized front-ends easy to develop. Perforce can be embedded as a component or subsystem of a larger application which requires controlled check-in/check-out or versioning of files. For an example, see the WebKeeper module, which uses the Perforce C/C++ API to enable an Apache HTTP web server to act as a Perforce client and request versioned files directly from a Perforce server.

Web Content Management

As described in Web Content Management with Perforce, Perforce's architecture is well suited for versioning and configuration requirements of Web Content Management (WCM). Using the Perforce Command-Line Client in automated procedures to populate web site filesystems, the need for users to access web sites directly is eliminated. Perforce's client workspace tracking can be used to identify and audit web site configurations. Web publication staging can be controlled with Perforce labels and Inter-File BranchingTM. Perforce is compatible with all file-based web server architectures and web authoring environments.

Implementation of Engineering Process

Perforce supports a wide spectrum of source management policies, although it imposes no engineering process rules or restrictions itself. Inter-File Branching facilitates the evolution of concurrent project code lines throughout all stages of the software development life cycle (see Perforce Software Life-Cycle Modeling). Changelist and job metadata supply an inherent association between file versions and user-defined process stages. Six types of server side triggers allow for the validation and manipulation of changelist, file and form specifications. Post-submit reviewing enables automatic email and status reporting. External project management and defect tracking systems can interface with Perforce through either the command interface or through the client API.

More Information

The most detailed description of Perforce is available in the "Perforce Concepts" chapter of the User's Guide to P4, available on our Technical Documentation page. For information about specific components of the Perforce system, please see the Perforce Products pages.

Fully functional server and client software is available for download and evaluation. For a guided demo, see theTen-Minute Test Drive for Unix and Ten-Minute Test Drive for Windows pages.

For information about obtaining a free multi-user evaluation license, please see Licensing and Pricing.