Distributed Version Control

Distributed version control means teams don't have to wait for slow remote ops to complete anymore

Plastic SCM Features

With Plastic SCM and distributed you will be able to:

>With Plastic SCM and distributed you will be able to
  • Setup different repositories on distant offices, so teams always work 'locally' (no more waits)
  • Push and pull the changes visually
  • Solve remote conflicts graphically
  • Setup repositories on developer machines so they can fluently work from home (if needed)

Visualize your distributed development

What is DVCS?

DVCS is the latest stage in the evolution of Version Control.

How it works

How it works

How it helps in the enterprise

Distributed version control is not only for open source projects. Plastic SCM was designed from the ground up to bring the best of branching and merging, parallel and distributed development to teams creating commercial software and enterprise applications.

There are some features to take into account when considering DVCS for commercial software developers:

  • Commercial teams are normally not as massively distributed as the hackers on the open source projects. They normally share an office, or a set of offices, and maybe some of them work from home.
  • The "main" repository is a requirement and forking totally independent alternatives out of the principal repository is normally not the desired scenario to keep costs low and productivity high.
  • Contributions are not done in the developers' "spare time" but normally are responding to tight schedules.
And still, DVCS is great for these teams since:
  • It enables teams to work together from different locations, contributing with each other, and avoiding slowdowns due to network issues.
  • They need strong branching and merging, and this is something DVCS is all about.
  • It enables developers to work at home, at a customer site, or even roaming, while still being able to contribute to the project.
What Plastic SCM adds on top is:
  • It is fully designed, from the ground up, to work in companies: from small shops to enterprises. It is not a layer on top of Git, Mercurial, or any other DVCS: it is a full featured distributed version control stack.
  • It is graphical, focusing on productivity, visualization, and ease of use- something required by big business. The Branch Explorer, the sync view, the IDE integrations, the GUI, and many more tools, make a big difference.
  • Strong security and access control provide fine-grained checks, policy enforcements and compliance.
  • The ability to run in both centralized and distributed modes: you can have a central server on one site, with all developers connecting to it (reducing potential issues derived from full distributed setups on heterogeneous environments), and then certain teams, developers, or sites running other servers and connecting to it. All options are available. Open source DVCS force one to work in a distributed mode, with a full replica at each developer machine.
  • Standard database storage: all data and metadata are stored on the company's database of choice: simplifying maintenance, administration, backup, setup, and tuning.
  • An improved merge mechanism able to deal with many of the business world's common scenarios and with the precise file and directory tracking that commercial projects need.

What's in here for ClearCase users

ClearCase developers might say: "We were distributed as of 20 years ago thanks to ClearCase MultiSite!". And they're right... Almost!

The most notable differences between ClearCase MultiSite and Plastic SCM from the "multi-site" point of view are:

  • ClearCase MultiSite forced you to have a "master replica". You're either the master of a branch or you are not. Plastic SCM doesn't impose any limitations on the concurrent modifications to branches.
  • Setting up and administering CC MultiSite was a daunting task. With Plastic SCM each server, by default, can replicate to any other, independent of the database backend they use or the operating system they run on.
  • ClearCase MultiSite was incredibly expensive. You can set up as many Plastic SCM servers as you need. We do not charge by server. Install one on each developer's machine if needed. Or two. No extra cost.
  • Distributed - fully distributed - means each developer has a replica. You can install a lightweight Plastic SCM daemon on a laptop. Don't try to set up a CC MultiSite on anything other than a full-featured corporate server monster.

So, while we at Codice Software were inspired by ClearCase, and we've always focused on making the teams moving away from CC feel at home with Plastic SCM, our product is a totally different and vastly improved system compared to good-ol CC MultiSite, outperforming it in every aspect.

Open Source development

DVCS was born in the open source world, as a way to better enable collaboration in highly de-centralized teams, that can't share effective access to a central location.

DVCS was created to handle the Linux kernel development, but since then it surpassed the original goals and became a global resource for developers.

In the last few years, all major open source projects abandoned Subversion, the former open source king, and headed towards systems such as Mercurial and most notably Git, the Linux kernel champion.

Open source projects can be massively decentralized. Theoretically DVCS means a "central server" is not required anymore, since each "peer" has his own replica ensuring:

  • Fast access to data (accessed locally instead of over the wire)
  • Simple collaboration between peers (each developer can share changes with any other developer)
  • Safety: each developer has a copy so it is virtually impossible to get a central site down or lost, copies and backups are everywhere.

However, not requiring a central repo doesn't mean one doesn't exist. At the end of the day, there's always a "blessed" repository, which conceptually plays the role of rendezvous point or central, and is the one that developers refer to when they contribute changes.

Open source DVCS tools such as Mercurial, Git, Bazaar and others, evolved to deal with open source development. They're great for that purpose and helped to create a version control revolution, breaking the former "status quo" and turning version control into a productivity factor in teams.

Plastic SCM is the only DVCS designed for teams developing commercial software, from small teams to huge companies, and as such it brings in features like ease of use, access control lists, standard database based storage, powerful graphical user interfaces, and professional support.

Mind the gap distributed as buzzword

DVCS has become a buzzword too and as such is easy to find in the wrong context.

A DVCS is a version control that lets developers work while totally disconnected from each other. This means:

  • Having a proxy that caches requests on one side is NOT distributed. It's fine under some circumstances, but it is NOT distributed. Many vendors of centralized version control systems tried to jump aboard the DVCS ship with simple proxies. This is cheating.
  • Working through the internet is NOT distributed either. Just having a TCP port and a web UI doesn't mean the system is distributed or that it enables distributed development.

Having a distributed version control system means being able to set up lightweight replicas even on developer's laptops, which are able to replicate changes (push and pull) to any other server easily.

The underlying architecture is so different from traditional centralized systems that it requires almost an entirely new development environment to get it adapted to the new working model.

That's the reason why Plastic SCM is, to date, the only commercial distributed version control system on the market. So mind the gap and don't get fooled: all the other commercial products are NOT distributed and at best provide some sort of cheap cache system that is far from being DVCS.

In the open source world Git, Mercurial, Bazaar and many others have been used by companies to build notable wrappers (GitHub, Bitbucket, etc.) to try to get them adapted to the enterprise without going through a full development cycle.

For developers

Find out how your work becomes easier and more efficient.

As a developer, there are several benefits a DVCS like Plastic SCM will bring:

  • A much better way to handle branching and merging, and hence a better way to isolate your changes, manage your own work in progress and share changes with your peers. The version control won't be a delivery mechanism anymore — it will be a tool to help you work better. Intermediatecheckins, diffs of your own code changes before sharing with others, shelves, and many more specialized tools.
  • Speed. Never wait for a slow server on a central location to deal with your checkins or updates. Your server will be local, at your office or even installed on your own machine (fully distributed environment).
  • Flexibility. Sometimes you'll need to work from a different location, like home, a customer site, a conference, or even a plane… DVCS means you can have your own replica of the repository on your laptop: fully distributed, fully unplugged, total freedom.
  • A way to embrace new development methodologies and trends, staying current with new approaches and bringing the best practices to your team.
For developers

For release builders

A great tool for building stable releases.

Plastic SCM is all about managing branching and merging and hence, it's a great tool for release builders focusing on building stable releases. You can...

  • Use extremely fast branching to encourage parallel development in theteam.
  • Use different task branches and bug branches to implement full tracking from task (even requirements) to code.
  • Enforce "frequent commits": each task has its own branch so developers will never break the build by checking in often.
  • Have the flexibility to select what branches go into the next release and avoid the mainline lock-in.
  • Pull from remote repositories (even developer's repositories) from the Branch Explorer.
  • Set up different repositories and push/pull between them to enforce the right practices.
  • Use ACL based security to enforce development policies.
  • Enjoy extremely fast merging including the most advanced algorithms like recursive-merge.
For release builders

For project managers

Plastic SCM is the foundation for visible and measurable projects.

As a project manager, a DVCS will give you:

  • The ability to manage teams spread among different locations. Developers are very sensitive about anything slowing them down. Having several sites and forcing them to connect to a central location is not an option because it is slow and error prone. DVCS lets you set up and manage different servers to enable fast operation on all sites.
  • The ability to hire talent independent of their location. Software is a global business – you might need a seasoned contractor to join your team, but he's located on the other side of the world. DVCS is the basic tool you need to enable this cooperation.
  • A way to improve parallel development and avoid freezes. DVCS is associated with strong branching and merging. Plastic SCM implements an extremely powerful branching and merging mechanism, so creating and merging branches is not an issue, but a power tool.
  • A way to embrace new development methodologies and trends, staying current with new approaches and bringing the best practices to your team.
For release builders