Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Why we ditched TFS and embraced Git, Github, TeamCity and Myget

12,419 views

Published on

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.

Published in: Software, Technology

Why we ditched TFS and embraced Git, Github, TeamCity and Myget

  1. 1. Dennis Doomen (@ddoomen) – Aviva Solutions Why we ditched TFS and embraced Git, Github, TeamCity and MyGet
  2. 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. 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. 4. Why do we think Git is better? Light-weight branching 4
  5. 5. Why do we think Git is better? Fast-forward Merging 5 Images: Git Glow
  6. 6. Why do we think Git is better? (Interactive) Rebasing 6 Images: Pro Git Book
  7. 7. Why do we think Git is better? Pull Requests 7 Images: Atlassian
  8. 8. Why do we think Git is better? • Advanced compression heuristics • Cleaning up history • Splitting repositories • ‘Automatic’ backups 8
  9. 9. Why do we think Git is better? 9
  10. 10. Additional Workflows 10 Centralized Workflow Feature Branch Workflow Images: Atlassian
  11. 11. Additional Workflows 11 Gitflow Workflow Forking Workflow Images: Atlassian
  12. 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. 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. 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. 15. Step 3 : Next steps • Jira • Breaking into separate repos and Nuget packaging 15
  16. 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
  17. 17. My Advice 17 NuGet Package Pull Request (-no-ff) Pull Request (-no-ff) master dev fetch & rebase fetch & rebase squash Product Component
  18. 18. How to contact me? • dennis.doomen@avivasolutions.nl • www.twitter.com/ddoomen • www.dennisdoomen.net • github.com/dennisdoomen/fluentassertions • www.csharpcodingguidelines.com 18
  19. 19. Resources • http://git-scm.com/book • http://nvie.com/posts/a-successful-git- branching-model/ • https://github.com/git-tfs/git-tfs 19
  20. 20. 20 A big thank you to our sponsors Gold Partners Silver & Track Partners Platinum Partners

×