Cohesive and isolated development with branches

  • Authors:
  • Earl T. Barr;Christian Bird;Peter C. Rigby;Abram Hindle;Daniel M. German;Premkumar Devanbu

  • Affiliations:
  • UC Davis, Davis, CA;Microsoft, Redmond, WA;McGill University, Monteal, QC, Canada;University of Alberta, Edmonton, AB, Canada;University of Victoria, Victoria, BC, Canada;UC Davis, Davis, CA

  • Venue:
  • FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

The adoption of distributed version control (DVC ), such as Git and Mercurial, in open-source software (OSS) projects has been explosive. Why is this and how are projects using DVC? This new generation of version control supports two important new features: distributed repositories and histories that preserve branches and merges. Through interviews with lead developers in OSS projects and a quantitative analysis of mined data from the histories of sixty project, we find that the vast majority of the projects now using DVC continue to use a centralized model of code sharing, while using branching much more extensively than before their transition to DVC. We then examine the Linux history in depth in an effort to understand and evaluate how branches are used and what benefits they provide. We find that they enable natural collaborative processes: DVC branching allows developers to collaborate on tasks in highly cohesive branches, while enjoying reduced interference from developers working on other tasks, even if those tasks are strongly coupled to theirs.