User:Manc56/Purecm

PureCM is a commercial, proprietary revision control solution developed and supported by PureCM.com Ltd.

Architecture
PureCM is based on a client/server architecture. The server component manages access to one of the supported database systems where project files and folders, as well as their revision data are stored. Access to this data is possible via any supported client, which are detailed below. Client and server communicate via TCP/IP using a proprietary protocol supporting TLS/SSL encryption.

Data storage
PureCM uses a database to store data. Up to its 2010-1 release, a proprietary database was used to store data. With the release of PureCM 2010-1, the relational databases SQLite and Microsoft SQL Server 2005+ have become the default database systems supported. SQLite is embedded with PureCM and runs as the same service as the PureCM server, while SQL Server support is based on database access via ODBC. Data is stored using reverse delta compression for both text-based and binary files, with the exception of large binary files where reverse delta can be less efficient than storing the complete file.

Clients
The client is available as a GUI client, command line client and plugin into 3rd party tools such as integrated development environments (IDEs), software build tools, defect tracking tools or desktop environments. The client is used to access project data stored on the server and create a local copy to work on, called workspace.

Client workspace
A PureCM workspace is made of two parts. It contains the files and folders of a specific project, plus a small workspace database used for local revision control. The workspace database can store file history and revision data locally, allowing users to create and rollback revisions without connection to the server.

Concurrent development
PureCM supports both file locking and version merging as described in the revision control article. As a default, PureCM enables multiple checkout for text-based files to allow multiple users to work on the same file(s). File locking is administered via file type policies that automatically lock checked out files when specified as such.

Branching
PureCM uses streams to represent both branches and labels (or tags). Streams contain all files and folders of a specific project and form a hierarchy when branched off. Therefore, a stream can inherit policies and changes from its parent, automating security and merging. Both are customisable, the latter by modifying the merge rules between two streams. Streams used for development are writable, whereas those used to label or tag a specific configuration are read-only. PureCM uses different terms to highlight this distinction, with writable streams called ‘versions’ and read-only streams called ‘releases’.

Merging
Merging between streams can be done directly on the server, either changeset by changeset or by combining multiple changesets as one. PureCM tracks merges across the project history to avoid remerging changes. As elements in PureCM are identified by IDs, renaming or moving does not break file history and allows for safe refactoring with concurrent development. PureCM includes a visual diff and merge tool for file and folder differences, and also works with 3rd party tools.

Platform support
The PureCM server and client are available for Mac OS X, Microsoft Windows, Linux and Solaris platforms. Client and server operating systems can be freely combined.

Interfaces
PureCM includes a .NET and Java SDK to let users access the server and develop custom automation or integration scripts. PureCM actions can be triggered based on events on the server. Client triggers are not supported for security reasons.

Access control and security
PureCM uses access control lists (ACL) to manage access to database content. Authentication can be managed using Windows Active Directory, built-in user/password or certificate authentication. Users and user group permissions can be set against any stored object in the PureCM database.

Licensing
PureCM is free for up to two users and for evaluation purposes. For more than two concurrent server connections, a license must be purchased. PureCM is available in two editions, PureCM Professional and PureCM Standard.