Configurable space
Introduction
Plastic SCM is a proprietary distributed version control system developed by the Spanish company Códice Software. As fundamental objectives, Plastic tries to provide greater support for parallel development, creation of branches, integration (merge) of branches, security and distributed development.
Characteristics
Branching support
To promote parallel development, Plastic focuses on supporting branching, which consists of dividing development into different branches, following a certain policy of use, protection, unprotection, content, etc. The main difference between Plastic's branching model and those implemented by systems such as CVS, Perforce, or Team Foundation Server) is that instead of making a copy of everything (or just the metadata) to each new branch that is generated, branches are created as empty objects. Only when an item is modified, the newly created revision is assigned to the branch. Subversion implements branching by creating copies of the entire branch, but postponing the copy until the file is actually modified (which is known as copy-on-write).
In this way the branch contains only files and directories that have been modified or created with respect to its parent branch.
This approach allows you to create many branches in a simple way, making it possible to implement branching patterns such as “branch per task”, detailed in the book SCM Patterns (reference) and in CM Crossroads (reference).
The branching model used in Plastic can be compared to the one implemented in Clearcase.
Due to the support that Plastic's branching model infrastructure provides, this system can handle thousands of branches in a single repository without noticeable loss in performance.
Smart branches
Plastic 2.5 (July 2008) introduces the concept of smart branches.
Smart branches consist of branches in which the user can define a hierarchy of branches, supported by inheritance mechanisms.
It is important to note that a branch in Plastic is simply a new object in the system. As we have pointed out before, it is empty since its creation, but it virtually contains the files and directories of its parent (or parents if a multi-level hierarchy is used).