- 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.
Features
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 orTeam 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=http://www.scmpatterns.com/book|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=http://www.cmcrossroads.com/bradapp/acme/branching/|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 tagsChanges 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 operationsDirectory 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.
Releases
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 fixesExternal references
* [http://www.codicesoftware.com Codice Software] — vendor of Plastic SCM
References
Wikimedia Foundation. 2010.