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

  • View
    2.038

  • Download
    3

  • Category

    Software

Preview:

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?

• dennis.doomen@avivasolutions.nl • www.twitter.com/ddoomen • www.dennisdoomen.net • github.com/dennisdoomen/fluentassertions• www.csharpcodingguidelines.com

20

A big thank you to our sponsors

Gold Partners

Silver & Track Partners

Platinum Partners

Recommended