Helix Server as a version control implementation

Helix Server uses a client-server architecture to implement version control management.

  • The Helix Server (also known as the Helix Core Server or p4d) manages shared file repositories, or depots, that contain every revision of every file under version management. Files are organized into directory trees. The server also maintains a database to track data associated with files and client activity: logs, user permissions, metadata, configuration values, and so on.
  • Helix Server clients provide an interface that allows you, and other users working in parallel, to check files in and out of the depot, resolve conflicts, track change requests, and more.

    Helix Server clients include a command-line client (p4), a graphical user interface client (P4V), and various plugins that work with commercial IDEs and productivity software. A Helix Server server can provide services to a mix of Helix Server clients.

    You use Helix Server clients to manage a special area of your computer called a workspace. Directories in the depot are mapped to directories in your workspace, which contain local copies of managed files. You always work on managed files in your workspace:

    1. You check the files out of the depot (and into your workspace).
    2. You modify the files.
    3. You check them back into the depot.
    4. If the changes you try to submit conflict with changes that other users have already submitted, you must resolve conflicts.

The next figure shows the mapping between depot files (shown on the left) and workspace files (shown on the right). Until files are checked out from the depot, they remain as read-only in the workspace. To have Helix Server update your workspace so that it reflects current work on the depot, synchronize your workspace to the depot by getting the latest revision of the files.

We have explained about checking files in and out of the depot, suggesting that single files may be checked in and out. To check files in and out of the depot, you use a changelist. A changelist must contain at least one file and can contain tens of thousands. A changelist is numbered and allows you to track all changes with respect to the contents of the depot: file modifications, the addition of a file, or the deletion of a file.

The changelist is the simplest way to organize your work. A changelists also represents the atomic unit of work in Helix Server: if a changelist includes multiple files, changes are submitted to the depot for ALL the files or NONE of the files. For example, if a network connection between the client and the server fails during changelist submission, the entire submit fails.