Plastic SCM
Encyclopedia
Plastic SCM is a commercial, proprietary revision control
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

 tool developed by Codice Software, Inc.

Plastic can work in centralized mode (with a central server) and as a distributed revision control system.

Architecture

Plastic is a client/server system although in current terms of version control it can also be defined as a distributed revision control system, due to its ability to have very lightweight servers on the developer computer and push and pull branches between servers (similar to what Git
Git (software)
Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

 and Mercurial
Mercurial
Mercurial is a cross-platform, distributed revision control tool for software developers. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C. It is supported on Windows and Unix-like systems, such as FreeBSD, Mac OS X and Linux...

 do).

The Plastic server stores data and metadata on a relational database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

. The database can be one of the following:
  • SQL Server
  • Firebird
  • Oracle
  • SQLite
  • MySql


Developers work on files in their client workspace
Workspace
Workspace is a term used in various branches of engineering and economic development.-Business development:Workspace refers to small premises provided, often by local authorities or economic development agencies, to help new businesses to establish themselves...

s, and check in changed files together in changesets.

Communication from client to server is done through a customized .NET remoting channel.

Database

The default Plastic database on a regular installation is a Firebird embedded database on Windows systems and a SQLite embedded database on Linux and MacOS X (since Plastic 3.0).

The database can be configured by tweaking the db.conf file located on the server directory and can be set up to use any of the other alternatives.

The database can be queried to extract extended information. All data and metadata are stored in the database.

Administrators can set up their preferred database system and set it up to run backups, disaster recovery and high-availability.

Every repository is stored on a separated database, except in case of Oracle, where every repository is a different user and tablespace.

Clients

There are different kinds of clients:
  • Command line tool: cm
  • GUI tool: plastic
  • Integrations with third party IDEs, most notably Visual Studio, Eclipse, IntelliJ and any SCC compatible environment.


The command line tool can be use for automation. It can run in "shell mode" (cm shell) where the command stays open and receives orders through the standard input, saving restarting the process for every command for high performance integrations.

Features

  • Complete file and metadata history
  • Revision history for branched, renamed, moved, copied, and deleted files
  • Rename support, also across branches
  • Graphical representation of the history of files and directories through the 3D version tree
  • Graphical representation of the evolution of the repository through the branch explorer
  • Three-way text file merging; merge tracking and re-merge prevention; common ancestor detection
  • Graphical diff
    Diff
    In computing, diff is a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Modern implementations also...

    ing, merging, and offline/online reconciliation tools
  • Graphical file content history and branch history viewers
  • Centralized, access-controlled repository with support for distributed revision control (see below)
  • Atomic commit
    Atomic commit
    An atomic commit is an operation in which a set of distinct changes is applied as a single operation. If the changes are applied then the atomic commit is said to have succeeded. If there is a failure before the atomic commit can be completed then all of the changes completed in the atomic commit...

    s -- the server assures that changesets are committed in their entirety
  • Shelving -- users can save and restore work in progress for task switching
  • Support for ASCII, Unicode
    Unicode
    Unicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...

    , binary, symbolic link
    Symbolic link
    In computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...

     (on Unix), Mac-specific, and UTF-16 files
  • Support for Mac OS X, Windows and Linux platforms
  • Server-side and client-side event triggers
  • Programmable command line client

Concurrency model

Plastic is based on a branch & merge concurrency model. Optionally it is possible to do exclusive checkouts in order to prevent concurrency, but it is not the default nor recommended way of working.

A checkout in Plastic doesn't mean a lock. It just means a new revision of the item is created in order to be edited. Several checkouts of the same item can be performed in parallel on different workspaces, even on the same branch.

In the default checkout and change model, users are expected to let the system know in advance which files they intend to change, even if they do not mean to lock them (similar to Perforce
Perforce
Perforce is a commercial, proprietary, centralized revision control system developed by Perforce Software, Inc.-Architecture:Perforce is a client/server system.The server manages a central database and a master repository of file versions....

).

Since version 2.8 it is also possible to perform a change and commit cycle in which a previous checkout is not needed, as developers from systems such as Subversion or Git
Git (software)
Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

 are used to.

Branching

Every item (file or directory) is identified by a unique id instead of a path.

Files do not have names directly associated, but as it happens with a file system, directories handle all naming. It makes renaming a very cheap operation.

Branches are defined as revision containers. Creating a branch doesn't perform any copy of revisions, it simply creates a new empty object.

Plastic branches are hierarchical: there's always a main branch (by default named /main) on every repository and normally all branches are created as child branches. A child branch means it inherits everything from its parent except the contents it already has. So, after creation, a branch is empty but it inherits its contents from the parent branch.

That's why when a new branch is created on Plastic it doesn't have any contents but if a workspace is switched (updated) to the branch the workspace won't be empty.

Branches with hierarchy are also known as smart branches and their inheritance can be set up as follows:
  • Inherit from a specific label
  • Inherit from a specific changeset
  • Dynamic inheritance from the parent branch, which means a change on the parent branch will be directly inherited to the child branches set up with dynamic inheritance


Branching is a cheap operation and the recommended workflow with Plastic encourages the creation of many branches (branch per task)

Merging

As of version 3.0 merge tracking information is kept on a per item basis. Every file and directory keeps track of the merge links between its revisions. Merge tracking information is used to calculate the nearest common ancestor of the two candidates on a merge, and parent links and merge links are weighted differently.

Merging is meant to be a focus feature of Plastic, and the system is built around this capability.

Distributed revision control

Plastic is able to push and pull branches from remote repositories, and merge conflicts if modifications happened on the same branch on two locations concurrently on the same files or directories. In case of conflict during push or pull operations, a fetch branch is created containing the fetched revisions. The branch can be merged later.

Plastic also provides a proxy server that caches frequently accessed revision data and can be used to reduce traffic on centralized setups.

Access control and security

Plastic differentiates from access control and security. User and group information can be retrieved from one of the following sources:
  • LDAP
  • Active Directory
  • Built-in user/password
  • Local users on the client and server machine (if the network is secured, Plastic is secured, otherwise there's no secured auth in this mode)


Every object in the system has an associated access control list (ACL) and there is a set of 32 different permissions to tune security.

Availability, release cycle and supported platforms

Free downloads of Plastic server, client, and plugin software are available from Codice Software's website.

Major releases of server and client software are typically published twice a year as pre-built executable
Executable
In computing, an executable file causes a computer "to perform indicated tasks according to encoded instructions," as opposed to a data file that must be parsed by a program to be meaningful. These instructions are traditionally machine code instructions for a physical CPU...

s for Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, and other operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

s. Minor releases are available on a weekly basis.

Licensing and terms of use

Community Edition licenses Plastic SCM for free to environments with up to 15 developers.

Free licenses are available for open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 software development, school or classroom projects, and trial/evaluation periods.

Community Edition, free for up to 15 users, has been released on November 1st 2010

Commercial licenses are available.

See also


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK