Continuously mining distributed version control systems: an empirical study of how Linux uses Git

Daniel M. German, Bram Adams, Ahmed E. Hassan
2015 Empirical Software Engineering  
Distributed version control systems (D-VCSs-such as git and mercurial) and their hosting services (such as Github and Bitbucket) have revolutionalized the way in which developers collaborate by allowing them to freely exchange and integrate code changes in a peer-to-peer fashion. However, this flexibility comes at a price: code changes are hard to track because of the proliferation of code repositories and because developers modify ("rebase") and filter ("cherry-pick") the history of these
more » ... es to streamline their integration into the repositories of other developers. As a consequence, researchers and practitioners, who typically only consider the (cleaned up) history in the official project repository, are unaware of important elements and activities in the collaborative software development. In this paper, we present a method that continuously mines all known D-VCSs of a software project to uncover the complete history of a project's development. We use this method to (1) show the divergence between the code history in the official Linux kernel repository and the complete kernel development history, and (2) to investigate the characteristics of the ecosystem of git repositories of the Linux kernel. Finally, we discuss how continuous mining could be adopted by current D-VCS hosting services. 1 Even services on top of D-VCSs, like Github, do not provide a way to know the set of all commits in a Super-repository, i.e., the commits that have already arrived to blessed and those that are still in other repositories. 2 The metadata consists of the time during which the commit was first committed (authorship date), the name of the author, the time when it was last committed (commit date), the committer, and the commit message.
doi:10.1007/s10664-014-9356-2 fatcat:e7iyyh6vubel5deo6qmddfyipm