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.
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
Why we ditched TFS and embraced Git, Github, TeamCity and Myget
1. Dennis Doomen (@ddoomen) – Aviva Solutions
Why we ditched TFS and embraced Git, Github,
TeamCity and MyGet
2. 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
3
4. Why do we think Git is better?
Light-weight branching
4
5. Why do we think Git is better?
Fast-forward Merging
5
Images: Git Glow
6. Why do we think Git is better?
(Interactive) Rebasing
6
Images: Pro Git Book
7. Why do we think Git is better?
Pull Requests
7
Images: Atlassian
8. Why do we think Git is better?
• Advanced compression heuristics
• Cleaning up history
• Splitting repositories
• ‘Automatic’ backups
8
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
12
13. Why Team City
• Branch detection
• Build investigation
• Test history
• Queue and agent statistics
• Easy templating
• Auditing
• Parameterized builds
• Cached repositories
• Build chains
• Notifications
13
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
14
15. Step 3 : Next steps
• Jira
• Breaking into
separate repos and
Nuget packaging
15
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
16