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

Transcript
Page 1: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

Dennis Doomen (@ddoomen) – Aviva Solutions

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

Page 2: 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

Page 3: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

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

Page 4: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

4

Why do we think Git is better?

Light-weight branching

DEMO

Page 5: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

5

Why do we think Git is better?

Fast-forward Merging

Images: Git Glow

Page 6: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

6

Why do we think Git is better?

(Interactive) Rebasing

Images: Pro Git Book

Page 7: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

7

Why do we think Git is better?

Pull Requests

Images: Atlassian

Page 8: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

8

Why do we think Git is better?

• Advanced compression heuristics• Cleaning up history• Splitting repositories• ‘Automatic’ backups

Page 9: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

9

Why do we think Git is better?

DEMO

Page 10: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

10

Additional Workflows

Centralized Workflow Feature Branch Workflow

Images: Atlassian

Page 11: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

11

Additional Workflows

Gitflow Workflow Forking Workflow

Images: Atlassian

Page 12: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

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

Page 13: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

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

Page 14: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

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

Page 15: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

15

Step 3 : Next steps

• Jira• Breaking into

separate repos and Nuget packaging

Page 16: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

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

Page 17: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

17

My Advice

NuGet Package

Pull Request(-no-ff)

Pull Request(-no-ff)

master

dev

fetch & rebase

fetch & rebase

squash

Product Component

Page 18: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

18

How to contact me?

[email protected] • www.twitter.com/ddoomen • www.dennisdoomen.net • github.com/dennisdoomen/fluentassertions• www.csharpcodingguidelines.com

Page 20: Why we ditched TFS and embraced Git, Github, TeamCity and Myget

20

A big thank you to our sponsors

Gold Partners

Silver & Track Partners

Platinum Partners