Plastic SCM

From Wikipedia, the free encyclopedia

Plastic SCM snapshot.
Plastic SCM snapshot.

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

Contents

[edit] Features

[edit] 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[1] and at CM Crossroads[2].

Plastic branching model can be compared to AccuRev or Clearcase.

[edit] 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.

3D version tree example
3D version tree example

[edit] Directory versioning

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

[edit] 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.

[edit] Diff and merge tools

Text differences
Text differences
Image differences
Image differences
Text merge
Text merge

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.

[edit] 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.

[edit] 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.

[edit] 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.

[edit] Releases

There are three 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 sytem: 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.

[edit] External references

[edit] References

  1. ^ Berczuk, Steve; Brad Appleton (2003). Software Configuration Management Patterns: Effective Teamwork, Practical Integration. Addison-Wesley. ISBN 0201741172. Retrieved on 2007-05-24. 
  2. ^ Streamed Lines: Branching Patterns for Parallel Software Development. CM Crossroads. Retrieved on 2007-05-24.