Upload
dennis-doomen
View
2.038
Download
3
Tags:
Embed Size (px)
DESCRIPTION
For over three years our product development organization has been growing from about 8 developers to the 45 we have now. As a Microsoft oriented organization, the obvious choice has been Team Foundation Server because of it’s many integrated elements such as source control, build environment, work item tracking, dashboards and reporting. However, during the third year the number of concurrent releases increased significantly so we started to get faced with the limitations of its centralized source control. About 6 months ago, we decided to finally make the switch to Git, a well-known distributed source control approach very popular in the open-source community. Many of us were already active in open-source projects, but introducing git in a large group of people has been, let’s say, interesting. In this session, I’d like to share the approach we took, the challenges we had, and how we solved most of them. Of course I will share the fundamental concepts behind Git and explain you why Git is so much better than a centralized source control solution.
Citation preview
Dennis Doomen (@ddoomen) – Aviva Solutions
Why we ditched TFS and embraced Git, Github, TeamCity and MyGet
2
• Principal Consultant Aviva Solutions• 17 years in this profession• C++ origins but since 2001 addicated
to C# and .NET• Main interests
• TDD, BDD, DDD, ES, CQRS, • OO, Design Patterns,
Architecture• Scrum/XP/Kanban• Application Lifecycle
Management
• Speaker• Public initiatives
– C# Coding Guidelines– Fluent Assertions
• Internet– www.dennisdoomen.net– DZone MVB– @ddoomen
3
The problems we had with TFS
• Branching and merging expensive• Building a branch is painful• Difficult to track merging history• Lack of reviewing tools• Weird merging side-effects• Dumn change tracking• Limited Cloud offering
4
Why do we think Git is better?
Light-weight branching
DEMO
5
Why do we think Git is better?
Fast-forward Merging
Images: Git Glow
6
Why do we think Git is better?
(Interactive) Rebasing
Images: Pro Git Book
7
Why do we think Git is better?
Pull Requests
Images: Atlassian
8
Why do we think Git is better?
• Advanced compression heuristics• Cleaning up history• Splitting repositories• ‘Automatic’ backups
9
Why do we think Git is better?
DEMO
10
Additional Workflows
Centralized Workflow Feature Branch Workflow
Images: Atlassian
11
Additional Workflows
Gitflow Workflow Forking Workflow
Images: Atlassian
12
Step 1 : Switching to Git and TeamCity
• Big learning curve• CR/LF and .gitattributes pain• Still no review support• No check-in policies• No easy work item association• No support for Submodules• No peeking at other branches• No forking• TFS-way-of-working = Noise
13
Why Team City
• Branch detection• Build investigation• Test history• Queue and agent statistics• Easy templating• Auditing• Parameterized builds• Cached repositories• Build chains• Notifications
DEMO
14
Step 2 : Switching to GitHub
• Pull Request reviewing• Integration with TeamCity• Requires internet bandwidth• Lots of functionality on
website• Forks and private repositories• Limited issue support
15
Step 3 : Next steps
• Jira• Breaking into
separate repos and Nuget packaging
16
Existing Challenges
• Limited Git support in VS• Tooling not aligned• History of a directory• Find origin of a branch• Commits vs branches• Where did a merge come from• Which commits have been
merged to master
17
My Advice
NuGet Package
Pull Request(-no-ff)
Pull Request(-no-ff)
master
dev
fetch & rebase
fetch & rebase
squash
Product Component
18
How to contact me?
• [email protected] • www.twitter.com/ddoomen • www.dennisdoomen.net • github.com/dennisdoomen/fluentassertions• www.csharpcodingguidelines.com
19
Resources
• http://git-scm.com/book• http://nvie.com/posts/a-successful-git-branchin
g-model/
• https://github.com/git-tfs/git-tfs
20
A big thank you to our sponsors
Gold Partners
Silver & Track Partners
Platinum Partners