Plastic SCM

Plastic SCM

Plastic SCM is a commercial SCM system developed by Codice Software. Plastic tries to focus on parallel development, branching and merging and security.


Branching support

To enable parallel development Plastic focuses on branching. The main difference between the Plastic branching model and the ones implemented by systems like CVS, Perforce or Team Foundation Server is that instead of copying everything (or just the metadata) to the new branch, branches are created as empty objects. Only when an item is modified, the newly created revision is placed on the branch. Subversion implements branching by appearing to make copies of the entire branch, but deferring the actual copying until the file is changed ("a la" copy-on-write).

So a branch only contains files or directories modified from its parent branch.

This approach makes easier creating lots of branches, allowing the implementation of branching patterns like "branch per task", detail in the book "SCM Patterns" [cite book|url=|title=Software Configuration Management Patterns: Effective Teamwork, Practical Integration|first=Steve|last=Berczuk|coauthors=Brad Appleton|id=ISBN 0201741172|year=2003|publisher=Addison-Wesley|accessdate=2007-05-24] and at CM Crossroads [cite web|url=|title=Streamed Lines: Branching Patterns for Parallel Software Development|publisher=CM Crossroads|accessdate=2007-05-24] .

Plastic branching model can be compared to AccuRev and Clearcase (both UCM and base).

Due to its underlying branching model Plastic can handle thousands of branches in a single repository with no hassle.

Smart branches

Plastic 2.5 (July 2008) introduces smart branches.

Smart branches are like regular branches but the user can define their "branch inheritance".

It is important to note that a branch in Plastic is just a new object in the system. It is empty upon creation, but it "virtually" contains the files and directories of it ancestor (or ancestors if a multi-level hierarchy is created).

A smart branch can be created from a specific label or tag, a changeset or a specific branch.

* Inheritance from a label: all the branch content comes from the label, but if a modification is done, the change goes to the branch. It is a good option to implement a bug fix against a well-known starting point.
* Changeset: the smart branch initially contains the files and directories at the changeset (not modified at the changeset, but the status of the parent branch at this changeset).
* Last from a branch: this is dynammic inheritance. The branch takes all the LAST revisions from the parent branch, and if something changes on the parent, the changes are propagated into the branch. Modifications on the branch itself are loaded before the ancestors.

Branch hierarchies can be tuned using the graphical user interface. Multiple levels of inheritance can be set at any time.

Branch explorer

The branch explorer is a user interface which draws all the branches on a repository. It also draws the merge relationships between branches and the "inheritance" links.

The branch explorer was initially introduced on Plastic 1.5 and has been improved since then. In 2.0 it introduced "interactive" support so common branch operations like creating a new branch, merging and running common queries can be performed from the explorer itself.

The "explorer" draws:
* branches
* merge links
* parent links (inheritance)
* changesets (squares on branches)
* labels and tags

Changes on branches or changesets can be "inspected" from the explorer

3D Version trees

Plastic provides ways to visualize version trees for both files and directories. The 3D version tree shows the evolution of a given file or directory, including merge links (the green arrows). Labels and extended information are also included.

More recently new links have been introduced to support:

* Regular merges (the green ones)
* Interval merges (cherry picks): both the interval and the merge are drawn
* Subtractive merges
* Revert operations

Directory versioning

Plastic supports directory versioning. Full renaming and moving are also supported.

Merge tracking

Each time a merge is performed, a link is created between the source and destination revisions. The link is not only important to visualize the process (to be displayed on a version tree), but used internally by Plastic in the following merge operations.

When you merge a branch, merge links are created, so if you try the merge again, Plastic notices there are no merges left.

Diff and merge tools

Plastic includes the following tools:

* "Code differences": code file differences with syntax highlight.
* "Image differences". supporting two modes, side by side or blended.
* "Code merge": 3-way merge tool.
* "Binary merge": to choose between revisions of a binary file.
* "Directory dff and merge": As directories are fully versioned in PlasticSCM, there are also specific graphic interfaces for them.

ACL based security

Each object inside a Plastic repository has an associated ACL. About 25 different permissions are available to allow or deny operations like check out, check in, merge, applying labels, creating repositories or workspaces and so on.

Customizable database backend

Plastic stores all its data and metadata inside standard SQL databases. Currently (version 2.0) it supports:
* MySql (5.0 and higher)
* SQL Server (2005 and higher)
* Firebird (both embedded and server configurations. The server configuration performs better)

Plastic has three different types of databases:
* repositories: stores information about the available repositories on a given server
* rep_xxx: one database for each repository. (xxx will be a number)
* workspaces: stores information about the files and directories the developers are working on. Instead of hidden directories in the workspace containing information about the working copy (as svn or cvs would do), plastic stores this information on the server.

The databases can be directly queried with external tools or using the "cm query" command.

By default Plastic deploys a Firebird database on both Windows and Linux. It is good enough for small and medium sized teams.

MySql and SQL Server perform better under heavy load, giving plastic better scalability.

Configurable workspaces

A workspace is a directory where repository contents are mapped. To exactly select what has to be downloaded to the user's disk, each workspace has an associated selector. A selector is quite similar to a clearcase config_spec, providing lots of customization capabilities.


There are four official Plastic SCM releases so far:

* Plastic 1.0: including branching and merging functionality, firebird backend, ACL based security, version tree and workspaces. Also includes integrations with Eclipse and Visual Studio.
* Plastic 1.5: releases a "standard" version for teams up to 10 developers, only for Windows and without security support. The "professional" version includes the following new functionality:
** Branch explorer: a way to visualize the relationships between the different branches at a repository level
** Query system: the "cm query" and "cm find" commands to run queries on metadata.
** SQL Server backend support
** Integrations with PowerBuilder, CruiseControl and JDeveloper.
* Plastic 2.0: launched in March 24th 2008. Introduces a redesigned GUI plus the following features:
** The grapical user interface supports multiple views on the same screen.
** GUI support for Linux
** Distributed development: servers can replicate branches and merge changes back
** Multi-server support: workspace and repository servers can be deployed on different machines for scalability
** Importers from Subversion, cvs and SourceSafe
** Code review helper tool: an extension of the query system to be able to inspect changes made on branches, changesets or labels
** Statistics tool: to display changes graphically.
** Branch explorer: changed from the previous release. Now it is not only a representation but also allow running actions.
** Eclipse plugin introduces the ability to run diffs within the environment, show labels and branches, and switch to different branches.
* Plastic 2.5: July 2008. Includes:
** Trigger support
** Subtractive merge
** A number of usability fixes

External references

* [ Codice Software] — vendor of Plastic SCM


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Plastic SCM — Saltar a navegación, búsqueda Plastic SCM es un Sistema de Configuraciones Software (en inglés Software Configuration Management) desarrollado por la empresa española Códice Software. Como objetivos fundamentales, Plastic trata de dar un mayor… …   Wikipedia Español

  • Plastic (disambiguation) — Plastic may refer to:* Plastic, a polymerized material ** A thermoplastic ** A thermoset * Any material that has plasticity * A genotype that has phenotypic plasticity * Plastics (group), a Japanese band *, a community driven message… …   Wikipedia

  • Comparison of revision control software — The following is a comparison of revision control software. The following tables includes general and technical information for notable revision control and software configuration management (SCM) software. This is an incomplete list, which may… …   Wikipedia

  • Comparison of Continuous Integration Software — Contents 1 About Continuous Integration Software 2 Comparison 3 See also 4 References About Continuous Integra …   Wikipedia

  • Gestión de configuración de software — Software Configuration Management (SCM) ó en castellano Gestión de configuración de software es una especialización de la Gestión de configuración a todas las actividades en el sector del desarrollo de software. SCM trata y controla: La… …   Wikipedia Español

  • List of revision control software — This is a list of notable software for revision control. Distributed model In the distributed approach, each developer works directly with their own local repository, and changes are shared between repositories as a separate step. Open source *… …   Wikipedia

  • Revision control — For the Wikipedia revision control system, see Wikipedia:Revision control. Example history tree of a revision controlled project. Revision control, also known as version control and source control (and an aspect of software configuration man …   Wikipedia

  • Monotone (software) — monotone Developer(s) The monotone team Initial release April 6, 2003 (2003 04 06) Stable release …   Wikipedia

  • Microsoft Visual SourceSafe — Visual Source Developer(s) Microsoft Initial release 1994 (1994) Stable release 2005 (8.0.50727.42) / October 2005 (2005 10) …   Wikipedia

  • Distributed revision control — A distributed revision control system (DRCS), distributed version control or decentralized version control (DVCS) keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a… …   Wikipedia