Why we ditched TFS and embraced Git, Github, TeamCity and Myget
-
Upload
dennis-doomen -
Category
Software
-
view
2.035 -
download
3
description
Transcript of 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
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