SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
How Do Centralized and Distributed
Version Control Systems Impact
Software Changes?
Caius Brindescu
Mihai Codoban
Sergii Shmarkatiuk
Danny Dig
1
2
GitHub is the main “forge”
for OSS projects
SourceForge
300K repos
GitHub
4.6M repos
What’s the difference?
3
Git SVN
History Local to every user On the server
Commits Private, local Centralized, public
Branching and
merging
Cheap Expensive
History Modifiable “Set in stone”
What’s the difference?
3
Git SVN
History Local to every user On the server
Commits Private, local Centralized, public
Branching and
merging
Cheap Expensive
History Modifiable “Set in stone”
What’s the difference?
3
Git SVN
History Local to every user On the server
Commits Private, local Centralized, public
Branching and
merging
Cheap Expensive
History Modifiable “Set in stone”
What’s the difference?
3
Git SVN
History Local to every user On the server
Commits Private, local Centralized, public
Branching and
merging
Cheap Expensive
History Modifiable “Set in stone”
4
What are we missing?
Developers Managers
Researchers Tool Builders
4
What are we missing?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
Is switching to Git good?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
Is switching to Git good?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
How does this new
paradigm affect mining
software repositories?
Is switching to Git good?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
How does this new
paradigm affect mining
software repositories?
Is switching to Git good?
Developers Managers
Researchers Tool Builders
Are they using the tools to
their full potential?
4
What are we missing?
How does this new
paradigm affect mining
software repositories?
Is switching to Git good?
Are they building the right
tools?
Developers Managers
Researchers Tool Builders
Survey
5
820 participants
Survey
5
820 participants
85% from industry 56% have over 10
years experience
51% work in teams of 6
or larger
Repository Analysis
6
132 repositories
358K commits
409M LOC
Repository Analysis
6
358K commits
409M LOC
52 SVN 51 Git 29 Hybrid
Git is the most used VCS
7
0%
15%
30%
45%
60%
5%1%
9%
12%
20%
53%
Git SVN Hg MS TFS CVS Other
We identified 3 themes
8
2. Impact of the team size on the VCS
3. Impact of the VCS on the software process
RQ 6: Does team size affect the choice of VCS?

RQ 7: Are larger teams more likely to use Issue Tracking Systems (ITS)?

RQ 8: Does team size affect the size of commits?

RQ 9: Does team size influence commit squashing?
RQ 10: Does the type of VCS influence the presence and the number of issue tracking labels (ITL)?
RQ 11: Is there a correlation between the number of ITLs in the commit message and the commit size?
RQ 12: How does the size of commits vary in time?
1. Impact of VCS on developer’s behavior
RQ 1: Does the type of VCS affect the size of commits?
RQ 2: Do developers split their commits into logical units of change? How do they do it?
RQ 3: How often and why do developers squash their commits?
RQ 4: Why do developers prefer one Version Control System over another?
RQ 5: Does the VCS influence the frequency with which developers commit?
We identified 3 themes
8
2. Impact of the team size on the VCS
3. Impact of the VCS on the software process
RQ 6: Does team size affect the choice of VCS?
RQ 7: Are larger teams more likely to use Issue Tracking Systems (ITS)?
RQ 8: Does team size aff
RQ 9: Does team size influence commit squashing?
RQ 10: Does the type of VCS influence the presence and the number of issue tracking labels (ITL)?
RQ 11: Is there a correlation between the number of ITLs
RQ 12: How does the size of commits vary in time?
1. Impact of VCS on developer’s behavior
RQ 1: Does the type of VCS affect the size of commits?
RQ 2: Do developers split their commits into logical units of change? How do they do it?
RQ 3: How often and why do developers squash their commits?
RQ 4: Why do developers prefer one Version Control System over another?
RQ 5: Does the VCS influence the frequency with which developers commit?
RQ1: Does the type of VCS
affect commit size?
For Git and SVN the
difference was
statistically significant
9
LOC
0
10.5
21
31.5
42
Mean
23.20
40.06
SVN Git
10
“Git promotes the idea that your commit space is
not inflicting pain on anybody else […] it
promotes small frequent commits […] rather
than the 5pm commit”
RQ1: Does the type of VCS
affect commit size?
For repositories that
transitioned, there was
no statistically
significant difference
11
RQ1: Does the type of VCS
affect commit size?
LOC
0
6.5
13
19.5
26
Mean
25.72
23.02
Hybrid-SVN Hybrid-Git
12
Git repositories have commits size 34% smaller
than SVN repositories, in terms of LOC
RQ1: Does the type of VCS
affect commit size?
12
Git repositories have commits size 34% smaller
than SVN repositories, in terms of LOC
One possible explanation is that each developer
commits to their own local repo, with no need for
synchronization or merging their changes.
Hybrid repos keep the same commit size because
of existing policies.
RQ1: Does the type of VCS
affect commit size?
12
Git repositories have commits size 34% smaller
than SVN repositories, in terms of LOC
One possible explanation is that each developer
commits to their own local repo, with no need for
synchronization or merging their changes.
Hybrid repos keep the same commit size because
of existing policies.
RQ1: Does the type of VCS
affect commit size?
Old habits die hard
Implications
Smaller commits makes it easier to “bisect” the tree
Git offers better tools for splitting commits
Some repositories migrate from one paradigm to the
other; this might bias the results
Changing the VCS is not enough
13
Separating the changes to the working copy into
multiple, separate commits
14
RQ2: Do developers split
their changes?
file1.txt
file2.txt!
file3.txt
file1.txt
file2.txt!
file3.txt
Separating the changes to the working copy into
multiple, separate commits
14
RQ2: Do developers split
their changes?
file1.txt
file2.txt!
file3.txt
Commit 1
Commit 2
RQ2: Do developers split
their changes?
15
0%
25%
50%
75%
100%
SVN Git
6%6%
13%27%
81%
68%
Split their changes Group their changes
Other
RQ2: Do developers split
their changes?
15
0%
25%
50%
75%
100%
SVN Git
6%6%
13%27%
81%
68%
Split their changes Group their changes
Other
“[changes] should be logically separated to
easily allow [the] commit message to drive [the]
review”
16
0%
25%
50%
75%
100%
SVN Git
12%11%
6%5%
45%62%
37%
22%
By implementation By issue
Policy Other
RQ2: Do developers split
their changes?
16
0%
25%
50%
75%
100%
SVN Git
12%11%
6%5%
45%62%
37%
22%
By implementation By issue
Policy Other
RQ2: Do developers split
their changes?
“[Git] gives useful tools for splitting or merging
commits”
76% of developers split their commits. The
percentage is higher for Git (81.25%),
compared to SVN (67.89%).
17
RQ2: Do developers split
their changes?
76% of developers split their commits. The
percentage is higher for Git (81.25%),
compared to SVN (67.89%).
17
RQ2: Do developers split
their changes?
We attribute this to an easier commit process.
76% of developers split their commits. The
percentage is higher for Git (81.25%),
compared to SVN (67.89%).
17
RQ2: Do developers split
their changes?
We attribute this to an easier commit process.
Overall, developers choose to split their
commits based on the issue they belong to.
18
RQ2: Do developers split
their changes?
For Git, more users (37%) split changes based
on implementation details that in SVN (22%).
18
RQ2: Do developers split
their changes?
For Git, more users (37%) split changes based
on implementation details that in SVN (22%).
“Each commit is one cohesive change […] (like
‘sphere class can now calculate its own volume’)
- user level features usually take many commits.”
Implications
Doing this makes it easier to perform other operations
such as cherry-picking.
19
Implications
Doing this makes it easier to perform other operations
such as cherry-picking.
19
For mining software repositories, Git might be better
since it allows smaller atomic changes.
Splitting changes is a manual and tedious process.
Tool builders could make their tools support this
process
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
RQ3: Why do developers
prefer one VCS over another?
20
0
12.5
25
37.5
50
Killer features Old habit Ease of use Personal pref. Other
9%
2%
20%
23%
46%
5%1%
42%42%
11%
SVN Git
21
RQ3: Why do developers
prefer one VCS over another?
“You get to commit to a local repository and make
your changes public only when they are ready”
21
RQ3: Why do developers
prefer one VCS over another?
“You get to commit to a local repository and make
your changes public only when they are ready”
“I found the commit process very straightforward […]”
22
RQ3: Why do developers
prefer one VCS over another?
Git is preferred because of its “killer features”
SVN is preferred because of it’s easier to use
and because of familiarity
Implications
23
Tool builders should focus on features that
complement the developer’s workflow.
While Git has a steep learning curve, it does allow
for better ways to manage your changes.
RQ4: Do developers squash
their commits
24
What is squashing?
25
RQ4: Do developers squash
their commits
0%
15%
30%
45%
60%
Git
8.62
55%
37%
Yes No N/A
Why do they do it?
Developers using Git mention two different reasons
(a) grouping several changes together
(b) they only care about the final solution, not the
path they took to get there
26
RQ4: Do developers squash
their commits
27
RQ4: Do developers squash
their commits
Over 1/3 of developers squash their commits
Large teams squash commits more often then
small ones
Implications
28
Tool builder could allow for non-destructive history
modifications, e.g.: hierarchical commits
Git allows users to change history before they make
it public or available to others.
Threats
Squashing
Age bias
OSS vs. Proprietary software
29
Conclusions
30
The commit size is smaller in Git than SVN.
Developers split their changes more often in Git,
using a finer granularity.
1/3 of developers use squashing to change the
history.
cope.eecs.oregonstate.edu/VCStudy
Teams of all sizes predominantly prefer Git (71%)

Contenu connexe

Tendances

WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?Weaveworks
 
Preventing Supply Chain Attacks on Open Source Software
Preventing Supply Chain Attacks on Open Source SoftwarePreventing Supply Chain Attacks on Open Source Software
Preventing Supply Chain Attacks on Open Source SoftwareAll Things Open
 
Web Programming - Git basics
Web Programming - Git basicsWeb Programming - Git basics
Web Programming - Git basicsÖmer Taşkın
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Gitramubonkuri
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started PresentationNap Ramirez
 
Github 101 An Adventurer's Guide To Open Source
Github 101   An Adventurer's Guide To Open SourceGithub 101   An Adventurer's Guide To Open Source
Github 101 An Adventurer's Guide To Open SourcePrachitibhukan
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part ISergey Aganezov
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Simplilearn
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHubDSCVSSUT
 
EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenmsohn
 

Tendances (20)

Git General
Git GeneralGit General
Git General
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Gitting better
Gitting betterGitting better
Gitting better
 
SCM Boot Camp
SCM Boot CampSCM Boot Camp
SCM Boot Camp
 
Git slides
Git slidesGit slides
Git slides
 
Git Tutorial
Git Tutorial Git Tutorial
Git Tutorial
 
Intro to Git & GitHub
Intro to Git & GitHubIntro to Git & GitHub
Intro to Git & GitHub
 
Preventing Supply Chain Attacks on Open Source Software
Preventing Supply Chain Attacks on Open Source SoftwarePreventing Supply Chain Attacks on Open Source Software
Preventing Supply Chain Attacks on Open Source Software
 
Web Programming - Git basics
Web Programming - Git basicsWeb Programming - Git basics
Web Programming - Git basics
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Git
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started Presentation
 
Github 101 An Adventurer's Guide To Open Source
Github 101   An Adventurer's Guide To Open SourceGithub 101   An Adventurer's Guide To Open Source
Github 101 An Adventurer's Guide To Open Source
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part I
 
Intro to Git & GitHub
Intro to Git & GitHubIntro to Git & GitHub
Intro to Git & GitHub
 
Git hub
Git hubGit hub
Git hub
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHub
 
EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heaven
 

Similaire à How do Centralized and Distributed Version Control Systems Impact Software Changes?

Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Bhavya Chawla
 
Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOpsBrice Fernandes
 
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...Simplilearn
 
[Perforce] Git Fusion
[Perforce] Git Fusion[Perforce] Git Fusion
[Perforce] Git FusionPerforce
 
Introducing GitSwarm: Pure Git with Globally Scalable DevOps
Introducing GitSwarm: Pure Git with Globally Scalable DevOpsIntroducing GitSwarm: Pure Git with Globally Scalable DevOps
Introducing GitSwarm: Pure Git with Globally Scalable DevOpsPerforce
 
Whether you should migrate to git
Whether you should migrate to gitWhether you should migrate to git
Whether you should migrate to gitAmit Anand
 
Svn vs mercurial vs github
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs githubVinoth Kannan
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityWeaveworks
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | EdurekaEdureka!
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...SlideTeam
 
Git And Git Hub.pptx
Git And Git Hub.pptxGit And Git Hub.pptx
Git And Git Hub.pptxMishalBibi
 
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...Gibran Badrulzaman
 
Continuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteContinuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteWeaveworks
 
Delivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsDelivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsWeaveworks
 
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Revelation Technologies
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineDevOps.com
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...VincitOy
 
DX, Guardrails, Golden Paths & Policy in Kubernetes
DX, Guardrails, Golden Paths & Policy in KubernetesDX, Guardrails, Golden Paths & Policy in Kubernetes
DX, Guardrails, Golden Paths & Policy in KubernetesWeaveworks
 
UNIT-I Introduction to CICD.pptx
UNIT-I Introduction to CICD.pptxUNIT-I Introduction to CICD.pptx
UNIT-I Introduction to CICD.pptxPandiya Rajan
 

Similaire à How do Centralized and Distributed Version Control Systems Impact Software Changes? (20)

Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.
 
Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps
 
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
 
[Perforce] Git Fusion
[Perforce] Git Fusion[Perforce] Git Fusion
[Perforce] Git Fusion
 
Introducing GitSwarm: Pure Git with Globally Scalable DevOps
Introducing GitSwarm: Pure Git with Globally Scalable DevOpsIntroducing GitSwarm: Pure Git with Globally Scalable DevOps
Introducing GitSwarm: Pure Git with Globally Scalable DevOps
 
Whether you should migrate to git
Whether you should migrate to gitWhether you should migrate to git
Whether you should migrate to git
 
Svn vs mercurial vs github
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs github
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | Edureka
 
Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...
 
Git And Git Hub.pptx
Git And Git Hub.pptxGit And Git Hub.pptx
Git And Git Hub.pptx
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
Understanding the GitOps Workflow and CICD Pipeline - What It Is, Why It Matt...
 
Continuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteContinuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event Keynote
 
Delivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsDelivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOps
 
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
 
The Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD PipelineThe Reality of Managing Microservices in Your CD Pipeline
The Reality of Managing Microservices in Your CD Pipeline
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
 
DX, Guardrails, Golden Paths & Policy in Kubernetes
DX, Guardrails, Golden Paths & Policy in KubernetesDX, Guardrails, Golden Paths & Policy in Kubernetes
DX, Guardrails, Golden Paths & Policy in Kubernetes
 
UNIT-I Introduction to CICD.pptx
UNIT-I Introduction to CICD.pptxUNIT-I Introduction to CICD.pptx
UNIT-I Introduction to CICD.pptx
 

Dernier

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 

Dernier (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 

How do Centralized and Distributed Version Control Systems Impact Software Changes?

  • 1. How Do Centralized and Distributed Version Control Systems Impact Software Changes? Caius Brindescu Mihai Codoban Sergii Shmarkatiuk Danny Dig 1
  • 2. 2 GitHub is the main “forge” for OSS projects SourceForge 300K repos GitHub 4.6M repos
  • 3. What’s the difference? 3 Git SVN History Local to every user On the server Commits Private, local Centralized, public Branching and merging Cheap Expensive History Modifiable “Set in stone”
  • 4. What’s the difference? 3 Git SVN History Local to every user On the server Commits Private, local Centralized, public Branching and merging Cheap Expensive History Modifiable “Set in stone”
  • 5. What’s the difference? 3 Git SVN History Local to every user On the server Commits Private, local Centralized, public Branching and merging Cheap Expensive History Modifiable “Set in stone”
  • 6. What’s the difference? 3 Git SVN History Local to every user On the server Commits Private, local Centralized, public Branching and merging Cheap Expensive History Modifiable “Set in stone”
  • 7. 4 What are we missing? Developers Managers Researchers Tool Builders
  • 8. 4 What are we missing? Developers Managers Researchers Tool Builders
  • 9. Are they using the tools to their full potential? 4 What are we missing? Developers Managers Researchers Tool Builders
  • 10. Are they using the tools to their full potential? 4 What are we missing? Developers Managers Researchers Tool Builders
  • 11. Are they using the tools to their full potential? 4 What are we missing? Is switching to Git good? Developers Managers Researchers Tool Builders
  • 12. Are they using the tools to their full potential? 4 What are we missing? Is switching to Git good? Developers Managers Researchers Tool Builders
  • 13. Are they using the tools to their full potential? 4 What are we missing? How does this new paradigm affect mining software repositories? Is switching to Git good? Developers Managers Researchers Tool Builders
  • 14. Are they using the tools to their full potential? 4 What are we missing? How does this new paradigm affect mining software repositories? Is switching to Git good? Developers Managers Researchers Tool Builders
  • 15. Are they using the tools to their full potential? 4 What are we missing? How does this new paradigm affect mining software repositories? Is switching to Git good? Are they building the right tools? Developers Managers Researchers Tool Builders
  • 17. Survey 5 820 participants 85% from industry 56% have over 10 years experience 51% work in teams of 6 or larger
  • 19. Repository Analysis 6 358K commits 409M LOC 52 SVN 51 Git 29 Hybrid
  • 20. Git is the most used VCS 7 0% 15% 30% 45% 60% 5%1% 9% 12% 20% 53% Git SVN Hg MS TFS CVS Other
  • 21. We identified 3 themes 8 2. Impact of the team size on the VCS 3. Impact of the VCS on the software process RQ 6: Does team size affect the choice of VCS?
 RQ 7: Are larger teams more likely to use Issue Tracking Systems (ITS)?
 RQ 8: Does team size affect the size of commits?
 RQ 9: Does team size influence commit squashing? RQ 10: Does the type of VCS influence the presence and the number of issue tracking labels (ITL)? RQ 11: Is there a correlation between the number of ITLs in the commit message and the commit size? RQ 12: How does the size of commits vary in time? 1. Impact of VCS on developer’s behavior RQ 1: Does the type of VCS affect the size of commits? RQ 2: Do developers split their commits into logical units of change? How do they do it? RQ 3: How often and why do developers squash their commits? RQ 4: Why do developers prefer one Version Control System over another? RQ 5: Does the VCS influence the frequency with which developers commit?
  • 22. We identified 3 themes 8 2. Impact of the team size on the VCS 3. Impact of the VCS on the software process RQ 6: Does team size affect the choice of VCS? RQ 7: Are larger teams more likely to use Issue Tracking Systems (ITS)? RQ 8: Does team size aff RQ 9: Does team size influence commit squashing? RQ 10: Does the type of VCS influence the presence and the number of issue tracking labels (ITL)? RQ 11: Is there a correlation between the number of ITLs RQ 12: How does the size of commits vary in time? 1. Impact of VCS on developer’s behavior RQ 1: Does the type of VCS affect the size of commits? RQ 2: Do developers split their commits into logical units of change? How do they do it? RQ 3: How often and why do developers squash their commits? RQ 4: Why do developers prefer one Version Control System over another? RQ 5: Does the VCS influence the frequency with which developers commit?
  • 23. RQ1: Does the type of VCS affect commit size? For Git and SVN the difference was statistically significant 9 LOC 0 10.5 21 31.5 42 Mean 23.20 40.06 SVN Git
  • 24. 10 “Git promotes the idea that your commit space is not inflicting pain on anybody else […] it promotes small frequent commits […] rather than the 5pm commit” RQ1: Does the type of VCS affect commit size?
  • 25. For repositories that transitioned, there was no statistically significant difference 11 RQ1: Does the type of VCS affect commit size? LOC 0 6.5 13 19.5 26 Mean 25.72 23.02 Hybrid-SVN Hybrid-Git
  • 26. 12 Git repositories have commits size 34% smaller than SVN repositories, in terms of LOC RQ1: Does the type of VCS affect commit size?
  • 27. 12 Git repositories have commits size 34% smaller than SVN repositories, in terms of LOC One possible explanation is that each developer commits to their own local repo, with no need for synchronization or merging their changes. Hybrid repos keep the same commit size because of existing policies. RQ1: Does the type of VCS affect commit size?
  • 28. 12 Git repositories have commits size 34% smaller than SVN repositories, in terms of LOC One possible explanation is that each developer commits to their own local repo, with no need for synchronization or merging their changes. Hybrid repos keep the same commit size because of existing policies. RQ1: Does the type of VCS affect commit size? Old habits die hard
  • 29. Implications Smaller commits makes it easier to “bisect” the tree Git offers better tools for splitting commits Some repositories migrate from one paradigm to the other; this might bias the results Changing the VCS is not enough 13
  • 30. Separating the changes to the working copy into multiple, separate commits 14 RQ2: Do developers split their changes? file1.txt file2.txt! file3.txt file1.txt file2.txt! file3.txt
  • 31. Separating the changes to the working copy into multiple, separate commits 14 RQ2: Do developers split their changes? file1.txt file2.txt! file3.txt Commit 1 Commit 2
  • 32. RQ2: Do developers split their changes? 15 0% 25% 50% 75% 100% SVN Git 6%6% 13%27% 81% 68% Split their changes Group their changes Other
  • 33. RQ2: Do developers split their changes? 15 0% 25% 50% 75% 100% SVN Git 6%6% 13%27% 81% 68% Split their changes Group their changes Other “[changes] should be logically separated to easily allow [the] commit message to drive [the] review”
  • 34. 16 0% 25% 50% 75% 100% SVN Git 12%11% 6%5% 45%62% 37% 22% By implementation By issue Policy Other RQ2: Do developers split their changes?
  • 35. 16 0% 25% 50% 75% 100% SVN Git 12%11% 6%5% 45%62% 37% 22% By implementation By issue Policy Other RQ2: Do developers split their changes? “[Git] gives useful tools for splitting or merging commits”
  • 36. 76% of developers split their commits. The percentage is higher for Git (81.25%), compared to SVN (67.89%). 17 RQ2: Do developers split their changes?
  • 37. 76% of developers split their commits. The percentage is higher for Git (81.25%), compared to SVN (67.89%). 17 RQ2: Do developers split their changes? We attribute this to an easier commit process.
  • 38. 76% of developers split their commits. The percentage is higher for Git (81.25%), compared to SVN (67.89%). 17 RQ2: Do developers split their changes? We attribute this to an easier commit process. Overall, developers choose to split their commits based on the issue they belong to.
  • 39. 18 RQ2: Do developers split their changes? For Git, more users (37%) split changes based on implementation details that in SVN (22%).
  • 40. 18 RQ2: Do developers split their changes? For Git, more users (37%) split changes based on implementation details that in SVN (22%). “Each commit is one cohesive change […] (like ‘sphere class can now calculate its own volume’) - user level features usually take many commits.”
  • 41. Implications Doing this makes it easier to perform other operations such as cherry-picking. 19
  • 42. Implications Doing this makes it easier to perform other operations such as cherry-picking. 19 For mining software repositories, Git might be better since it allows smaller atomic changes. Splitting changes is a manual and tedious process. Tool builders could make their tools support this process
  • 43. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 44. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 45. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 46. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 47. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 48. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 49. RQ3: Why do developers prefer one VCS over another? 20 0 12.5 25 37.5 50 Killer features Old habit Ease of use Personal pref. Other 9% 2% 20% 23% 46% 5%1% 42%42% 11% SVN Git
  • 50. 21 RQ3: Why do developers prefer one VCS over another? “You get to commit to a local repository and make your changes public only when they are ready”
  • 51. 21 RQ3: Why do developers prefer one VCS over another? “You get to commit to a local repository and make your changes public only when they are ready” “I found the commit process very straightforward […]”
  • 52. 22 RQ3: Why do developers prefer one VCS over another? Git is preferred because of its “killer features” SVN is preferred because of it’s easier to use and because of familiarity
  • 53. Implications 23 Tool builders should focus on features that complement the developer’s workflow. While Git has a steep learning curve, it does allow for better ways to manage your changes.
  • 54. RQ4: Do developers squash their commits 24 What is squashing?
  • 55. 25 RQ4: Do developers squash their commits 0% 15% 30% 45% 60% Git 8.62 55% 37% Yes No N/A
  • 56. Why do they do it? Developers using Git mention two different reasons (a) grouping several changes together (b) they only care about the final solution, not the path they took to get there 26 RQ4: Do developers squash their commits
  • 57. 27 RQ4: Do developers squash their commits Over 1/3 of developers squash their commits Large teams squash commits more often then small ones
  • 58. Implications 28 Tool builder could allow for non-destructive history modifications, e.g.: hierarchical commits Git allows users to change history before they make it public or available to others.
  • 59. Threats Squashing Age bias OSS vs. Proprietary software 29
  • 60. Conclusions 30 The commit size is smaller in Git than SVN. Developers split their changes more often in Git, using a finer granularity. 1/3 of developers use squashing to change the history. cope.eecs.oregonstate.edu/VCStudy Teams of all sizes predominantly prefer Git (71%)