As discussed in the `"Basic Concepts`" chapter of Introducing Helix, version control systems can implement either a centralized model or a distributed model. The Helix Versioning Engine supports either model, as well as a hybrid of the two. This guide describes the distributed versioning features of the Helix Versioning Engine.

A distributed version control system gives users access to an entire repository of archived content — and changes to that content — from a personal server on their local machine. This means that the entire history of a file is contained on each user’s personal server. A user can manage versioned content without interacting with any other Helix server unless desired. A user can also rewrite and revise history to discard unwanted intermediate information. In general, the distributed model allows users to work more experimentally, to try out changes and branch new streams, without fear of interfering with others' work.

Helix distributed versioning functionality also provides a collaborative workflow, via shared servers; these are classic Helix servers that allow users to share their work with each other. In this model, users can work disconnected from the network and the shared servers until they’re ready to copy content to or from the shared servers. Moreover, unlike other version control systems such as Git, users can copy a subset of the shared server content to their personal server, rather than the entire shared server repository.

As the diagram below illustrates, clients submit changes to a personal server. The client then pushes — that is, copies — the content to a shared server. A different client can then fetch — that is, copy — the content from the shared server to their personal server.

basic dvcs

Helix distributed versioning also allows synchronization of content across multiple offices or teams. This might happen using the p4 fetch and p4 push commands if the servers are networked or the p4 zip and p4 unzip commands if they’re not. Synchronization of content across sites is covered in the "Managing Distributed Development" section of the Helix Versioning Engine Administrator Guide: Fundamentals.

This book, Using Helix for Distributed Versioning, covers the following topics:

  • Starting up a personal server — either empty or populated with files
  • Fetching and pushing files between servers
  • Branching
  • Understanding remotes
  • Rewriting history
  • Mapping of Git commands to Helix commands