SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
GIT im Leben
eines VS Entwicklers
Marc Müller 4tecture GmbH, Schweiz
Nico Orschel AIT GmbH & Co. KG, Deutschland
Unsere Vergangenheit
und warum wir heute
hier sind
• TFS Nutzer seit TFS 2005 Beta
• TFVC Historie und Erfahrung seit > 10 Jahren
• Stark auf Microsoft Stack fokussiert
• Wenig OpenSource Background
• Wechsel auf Cloud seit > ca. 3 Jahren (Office365,
VSTS, …)
• Dezentrales Team + Arbeiten
• Kunden- & Partner-Teams ebenfalls verteilt
• OpenSource (Codeplex, Github, …)
Wer sind wir?
• Nico Orschel, Principal Consultant
@ AIT Gmbh & Co. KG + MVP
Mail: Nico.Orschel@aitgmbh.de
Twitter: @nicoorschel
• Marc Müller, Principal Consultant
@ 4tecture Gmbh, CH + MVP
Mail: mmueller@4tecture.ch
Twitter: @muellermarc
Agenda
• Konzepte und GIT Basics
• Nützliche Tools
• Praxis Themen
• Migration von TFVC nach GIT
• GIT vs. TFVC
• Branching-Strategie
• Binär-Dateien
• Build Management
• Zukunft
• Fazit
GIT Historie
• Geschrieben von Linus Torvalds für die Arbeit
am Linux Kernel ~2005
• Firmen, welche GIT nutzen
• Microsoft
• Facebook
• Google
• LinkedIn
• Netflix
• …
TFS und GIT - Historie
• Erste Gehversuche mit GIT-TF seit ca.
August 2012
• https://gittf.codeplex.com/releases/view/1
00054
• Erste „richtige“ Integration in VSTS /
Visual Studio 2012 seit ca. Jan 2013
• https://blogs.msdn.microsoft.com/visualstu
dioalm/2013/01/30/getting-started-with-
git-in-visual-studio-and-team-foundation-
service/
• On-Prem verfügbar in TFS seit TFS 2013
• https://blogs.msdn.microsoft.com/bharry/2
013/06/03/visual-studio-2013/
Was ist GIT?
• Ein verteiltes Versionskontrollsystem
• Ein Verzeichnis-basierendes Content
Management System
• Ein Baum-basierendes
Versionsspeichersystem (Tree History
Storage System)
oder
Was ist GIT?
Was bedeutet
verteilt?
• Jeder verfügt über die komplette
Historie
• Alles wird offline erledigt
• Keine zentrale Stelle
• Änderungen können ohne Server
getauscht werden
Zentrale vs. De-Zentrale Versionskontrolle
Zentraler Server
(z.B. TFS, SVN,
CVS, …)
Remote Server
(Ver-)Teilen von Commits
Nico Local
Repo
Marc
Repo
Jan
Repo
Thomas
Repo
A B C
A B C A B C
A B C
(Ver-)Teilen von Commits
Nico Local
Repo
Marc
Repo
Jan
Repo
Thomas
Repo
A B C
A B C A B C
A B C
Remote Repo (z.B. TFS, VSTS)
A B C
D
D
D
D
D
Branches
• Branches in GIT verfolgen eine andere
Philosophie als in TFVC
• GIT Branches sind leichtgewichtig
• GIT Branch-Inhalte sind im gleichen
Verzeichnis
Fragestellungen
• Lokale vs. Remote Branches
• Kurz- vs. Langfristige Branches
Demo: Git
Basics
Begriffe Branching
• Merge: Integrieren der Änderungen in einen Zielbranch, im Ziel-Branch
entsteht ein neuer Commit
• Rebase: 1:1 Wiedergabe von Commits auf einem Ziel-Branch, im Zielbranch
werden die Original-Commits „angefügt“
• Fork: Isolierte Kopie eines Repositories
• Pull Request: Änderungen zur Übernahme „anmelden“, Kontrollierte
Übergabe von Änderungen, Review
• Origin: Bezeichnung für Remote Repo; Konvention
Fork or No-Fork?
Fork or No-Fork?
Merge
Vorher: Nacher:
Befehl:
git merge topic
Info:
https://git-scm.com/docs/git-merge
Rebase 1/3
• Vorher • Nachher
Befehl:
git rebase master
git rebase master topic
Rebase 2/3
• Vorher • Nachher
Befehl:
git rebase --onto master next topic
Rebase 3/3
• Vorher • Nachher
Befehl:
git rebase --onto master next topic
GIT Squash
Unser Lieblings-Feature
Mehre Commits zu einem
Commit zusammenfassen
Warnung: Nicht auf Master
oder bereits
„hochgeladenen“ Commits
Git Squash
Befehle:
git reset --hard HEAD~12
git merge --squash HEAD@{1}
git commit
Demo: Squash
und Pull
Request –
für ordnungs-
liebende
Menschen ☺
Der „perfekte“
VS GIT-Arbeitsplatz
• Visual Studio 2015+ / besser 2017
• GitFlow Addon für Visual Studio
• GIT CMD Tools
• PoshGIT (Powershell Addon)
• Source Tree oder Tower
Beispiel:
Source Tree
GIT vs. TFVC
• Fragestellung:
• Ist GIT besser als TFVC?
• Stärken TFVC
• Skalierung/Performance bei großen Code-Basen
• Skalierung/Performance bei großen und vielen
Binärdateien
• „Sicherheit“ / Zugriffssteuerung / Geistiges
Eigentum
• Stärken GIT
• Verteiltes Arbeiten
• Performant wenn nicht alte Vorgehensweisen
1:1 übernommen werden
• Offline Fähigkeit
Migration von TFVC
nach GIT
• Strategien
• Toolgestützte Migration
• Manuelle Migration
• Tools
• Web Access (120 Tage)
• GIT-TF (Microsoft, Cross-Plattform)
• GIT-TFS (Community, .NET)
• GIT-SVN
• …
Git-Flow
• Dezentral arbeiten bedeutet
nicht ohne Konventionen zu
arbeiten
• Weit verbreitetes Branching
Konzept für große Projekte ist
GitFlow
• http://nvie.com/posts/a-
successful-git-branching-
model/
Umgang mit Binär-Dateien
• GIT skaliert nicht gut bei (großen) Binär-
Dateien
• Große Repos sind schlecht für verteiltes
Arbeiten
• Auswege
• Paketmanager (NuGet, etc.) für
Abhängigkeiten verwenden
• GIT-LFS verwenden
• GIT-GVFS (experimental)*
Demo: Large File
Support (LFS) –
für
Schwergewichte
Ein oder mehre GIT Repos?
• Thema ist kontrovers diskutiert
• https://jaxenter.com/microservices-mono-repo-vs-multiple-
repositories-130148.html
• Fragestellung:
• Verteile ich meine Anwendung auf ein oder
mehre Repos?
• Ist ein Repo kontraproduktiv zu
Vorgehensweisen und Architektur-Themen
wie Micro-Services, …?
Scaling GIT
• Microsoft 1ES Initiative
• GIT arbeitsfähig für richtig
große GIT Repos machen
• Ca. 280 GB Windows +
Office Code-Basis
• GIT GVFS - Git Virtual File
System
• https://github.com/Microsoft/
gvfs
Ein bisschen
Spaß am Ende ...
• Gource:
http://gource.io/
Demo:
Roundtrip
Build Release
und ein etwas
Lustiges am
Ende
Fazit
Quelle: http://www.pianojoe.de/code/simpsongenerator/index.php
Wir unterstützen Sie
KONTAKT
Nico.Orschel@aitgmbh.de
+49 151 55052624
@nicoorschel
AIT GmbH & Co. KG
Leitzstr. 45, 70469 Stuttgart
www.aitgmbh.de
BERATUNG
Agile ALM und TFS
.NET und Architektur
ENTWICKLUNG
Dienstleister für individuelle
Lösungen mit .NET und Azure
© AIT GmbH & Co. KG – Alle genannten und gezeigten Marken oder Warenzeichen sind eingetragene Marken oder eingetragene Warenzeichen ihrer jeweiligen Eigentümer und ggf. nicht gesondert gekennzeichnet. Aus dem Fehlen der
Kennzeichnung kann nicht geschlossen werden, daß es sich bei einem Begriff oder einem Bild nicht um eine eingetragene Marke oder ein eingetragenes Warenzeichen handelt.
Marc Müller
Principal Consultant
für DevOps, ALM, TFS /VS, .NET
E-Mail: marc.mueller@4tecture.ch
Webseite: http://www.4tecture.ch
Schulungen: http://4tecture.ch/trainings
Blog: http://4tecture.ch/blog
Twitter: @muellermarc
GIT-TF
▪ https://gittf.codeplex.com/
GIT-LFS
▪ https://git-lfs.github.com/
Posh-GIT
▪ https://github.com/dahlbyk/posh-git
Tower
▪ https://www.git-tower.com/windows/
Source Tree
▪ https://de.atlassian.com/software/sourcetree
Git-Flow
▪ http://nvie.com/posts/a-successful-git-branching-model/
Scaling Git (and some back story)
▪ https://blogs.msdn.microsoft.com/bharry/2017/02/03/scaling-git-and-some-back-story/
Git-GVFS
▪ https://github.com/Microsoft/gvfs
ANNOUNCING GIT-LFS ON ALL VSO GIT REPOS
▪ https://blogs.msdn.microsoft.com/visualstudioalm/2015/10/01/announcing-git-lfs-on-all-vso-
git-repos/
Pull Request auf GitHub über einen Fork
▪ HTTP://BLOG.AITGMBH.DE/2017/04/26/PULL-REQUEST-AUF-GITHUB-UEBER-EINEN-FORK/
We’re discussing a common VC question – to fork
or not to fork a Git repository
▪ https://blogs.msdn.microsoft.com/visualstudioalmrangers/2017/02/0
2/were-discussing-a-common-vc-question-to-fork-or-not-to-fork-
a-git-repository/

Weitere ähnliche Inhalte

Ähnlich wie DWX 2017 - GIT im Leben eines VS Entwicklers

Enterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanEnterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanCollabNet
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und GerritStefan Lay
 
Update TYPO3 V4.5 > 6.2 LTS
Update TYPO3 V4.5 > 6.2 LTSUpdate TYPO3 V4.5 > 6.2 LTS
Update TYPO3 V4.5 > 6.2 LTSCS2 AG
 
Versionierung mit GIT
Versionierung mit GITVersionierung mit GIT
Versionierung mit GITgedoplan
 
Why Ops ignored: Dev ops in practice scrum deutschland 2017
Why Ops ignored: Dev ops in practice   scrum deutschland 2017Why Ops ignored: Dev ops in practice   scrum deutschland 2017
Why Ops ignored: Dev ops in practice scrum deutschland 2017Matthias Fauter
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungMario Müller
 
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011Stefan Lay
 
Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013KirstenSchelper
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Michael Whittaker
 
Elemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 ÜberblickElemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 Überblickelemente websolutions
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittSDL Language Technologies
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DNUG e.V.
 
Frontend Formulare in TYPO3 8 LTS
Frontend Formulare in TYPO3 8 LTSFrontend Formulare in TYPO3 8 LTS
Frontend Formulare in TYPO3 8 LTSPeter Kraume
 
Interaktives Zusammenarbeiten mit Collaboration
Interaktives Zusammenarbeiten mit CollaborationInteraktives Zusammenarbeiten mit Collaboration
Interaktives Zusammenarbeiten mit CollaborationStefan Hilpp
 

Ähnlich wie DWX 2017 - GIT im Leben eines VS Entwicklers (20)

TYPO3 CMS 7
TYPO3 CMS 7TYPO3 CMS 7
TYPO3 CMS 7
 
Enterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanEnterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - German
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und Gerrit
 
Update TYPO3 V4.5 > 6.2 LTS
Update TYPO3 V4.5 > 6.2 LTSUpdate TYPO3 V4.5 > 6.2 LTS
Update TYPO3 V4.5 > 6.2 LTS
 
Deployment
DeploymentDeployment
Deployment
 
Versionierung mit GIT
Versionierung mit GITVersionierung mit GIT
Versionierung mit GIT
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
Why Ops ignored: Dev ops in practice scrum deutschland 2017
Why Ops ignored: Dev ops in practice   scrum deutschland 2017Why Ops ignored: Dev ops in practice   scrum deutschland 2017
Why Ops ignored: Dev ops in practice scrum deutschland 2017
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
 
Workspaces in TYPO3
Workspaces in TYPO3Workspaces in TYPO3
Workspaces in TYPO3
 
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
 
Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013
 
Warum gerade TYPO3?
Warum gerade TYPO3?Warum gerade TYPO3?
Warum gerade TYPO3?
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
 
Elemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 ÜberblickElemente Websolutions - FLOW3 Überblick
Elemente Websolutions - FLOW3 Überblick
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste Schritt
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
 
Frontend Formulare in TYPO3 8 LTS
Frontend Formulare in TYPO3 8 LTSFrontend Formulare in TYPO3 8 LTS
Frontend Formulare in TYPO3 8 LTS
 
Interaktives Zusammenarbeiten mit Collaboration
Interaktives Zusammenarbeiten mit CollaborationInteraktives Zusammenarbeiten mit Collaboration
Interaktives Zusammenarbeiten mit Collaboration
 
git Vorstellung
git Vorstellunggit Vorstellung
git Vorstellung
 

Mehr von Marc Müller

.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...Marc Müller
 
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Marc Müller
 
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOpsMarc Müller
 
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-Benutzer
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-BenutzerDWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-Benutzer
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-BenutzerMarc Müller
 
DWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes ReleaseDWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes ReleaseMarc Müller
 
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsDWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsMarc Müller
 
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...Marc Müller
 
Global Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsGlobal Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsMarc Müller
 
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTS
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTSBASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTS
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTSMarc Müller
 
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESS
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESSBASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESS
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESSMarc Müller
 
BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes
BASTA! 2022 - Einführung in Helm, der Paket-Manger für KubernetesBASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes
BASTA! 2022 - Einführung in Helm, der Paket-Manger für KubernetesMarc Müller
 
BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
 BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-ProzessMarc Müller
 
BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines
 BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines
BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps PipelinesMarc Müller
 
.NET Day 2022 - Fast feedback with pull request deployments
.NET Day 2022 - Fast feedback with pull request deployments.NET Day 2022 - Fast feedback with pull request deployments
.NET Day 2022 - Fast feedback with pull request deploymentsMarc Müller
 
DWX 2022 - DevSecOps mit GitHub
DWX 2022 - DevSecOps mit GitHubDWX 2022 - DevSecOps mit GitHub
DWX 2022 - DevSecOps mit GitHubMarc Müller
 
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-ProzessDWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-ProzessMarc Müller
 
Einführung in Helm - der Paket-Manger für Kubernetes
Einführung in Helm - der Paket-Manger für KubernetesEinführung in Helm - der Paket-Manger für Kubernetes
Einführung in Helm - der Paket-Manger für KubernetesMarc Müller
 
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsDWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsMarc Müller
 
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...Marc Müller
 

Mehr von Marc Müller (20)

.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
 
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
 
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
 
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-Benutzer
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-BenutzerDWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-Benutzer
DWX 2023 - GitHub Actions für Azure-DevOps-Pipelines-Benutzer
 
DWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes ReleaseDWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
 
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request DeploymentsDWX 2023 - Schnelles Feedback mit Pull-Request Deployments
DWX 2023 - Schnelles Feedback mit Pull-Request Deployments
 
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...
DWX 2023 - .NET-Microservices mit Dapr: Zu viel Abstraktion oder der richtige...
 
Global Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deploymentsGlobal Azure Austria 2023 - Fast feedback with pull request deployments
Global Azure Austria 2023 - Fast feedback with pull request deployments
 
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTS
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTSBASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTS
BASTA Spring 2023 - SCHNELLES FEEDBACK MIT PULL REQUEST DEPLOYMENTS
 
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESS
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESSBASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESS
BASTA Spring 2023 - AUTOMATISIERTES DATENBANK-DEPLOYMENT IM DEVOPS-PROZESS
 
BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes
BASTA! 2022 - Einführung in Helm, der Paket-Manger für KubernetesBASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes
BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes
 
BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
 BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
BASTA! 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
 
BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines
 BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines
BASTA! 2022 - GitHub Actions für Nutzer der Azure DevOps Pipelines
 
.NET Day 2022 - Fast feedback with pull request deployments
.NET Day 2022 - Fast feedback with pull request deployments.NET Day 2022 - Fast feedback with pull request deployments
.NET Day 2022 - Fast feedback with pull request deployments
 
DWX 2022 - DevSecOps mit GitHub
DWX 2022 - DevSecOps mit GitHubDWX 2022 - DevSecOps mit GitHub
DWX 2022 - DevSecOps mit GitHub
 
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-ProzessDWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
DWX 2022 - Automatisiertes Datenbank-Deployment im DevOps-Prozess
 
Einführung in Helm - der Paket-Manger für Kubernetes
Einführung in Helm - der Paket-Manger für KubernetesEinführung in Helm - der Paket-Manger für Kubernetes
Einführung in Helm - der Paket-Manger für Kubernetes
 
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsDWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
 
Helm introduction
Helm introductionHelm introduction
Helm introduction
 
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
ADCD 2022 - Handling secrets in the release process with Azure DevOps and Azu...
 

DWX 2017 - GIT im Leben eines VS Entwicklers

  • 1. GIT im Leben eines VS Entwicklers Marc Müller 4tecture GmbH, Schweiz Nico Orschel AIT GmbH & Co. KG, Deutschland
  • 2. Unsere Vergangenheit und warum wir heute hier sind • TFS Nutzer seit TFS 2005 Beta • TFVC Historie und Erfahrung seit > 10 Jahren • Stark auf Microsoft Stack fokussiert • Wenig OpenSource Background • Wechsel auf Cloud seit > ca. 3 Jahren (Office365, VSTS, …) • Dezentrales Team + Arbeiten • Kunden- & Partner-Teams ebenfalls verteilt • OpenSource (Codeplex, Github, …)
  • 3. Wer sind wir? • Nico Orschel, Principal Consultant @ AIT Gmbh & Co. KG + MVP Mail: Nico.Orschel@aitgmbh.de Twitter: @nicoorschel • Marc Müller, Principal Consultant @ 4tecture Gmbh, CH + MVP Mail: mmueller@4tecture.ch Twitter: @muellermarc
  • 4. Agenda • Konzepte und GIT Basics • Nützliche Tools • Praxis Themen • Migration von TFVC nach GIT • GIT vs. TFVC • Branching-Strategie • Binär-Dateien • Build Management • Zukunft • Fazit
  • 5. GIT Historie • Geschrieben von Linus Torvalds für die Arbeit am Linux Kernel ~2005 • Firmen, welche GIT nutzen • Microsoft • Facebook • Google • LinkedIn • Netflix • …
  • 6. TFS und GIT - Historie • Erste Gehversuche mit GIT-TF seit ca. August 2012 • https://gittf.codeplex.com/releases/view/1 00054 • Erste „richtige“ Integration in VSTS / Visual Studio 2012 seit ca. Jan 2013 • https://blogs.msdn.microsoft.com/visualstu dioalm/2013/01/30/getting-started-with- git-in-visual-studio-and-team-foundation- service/ • On-Prem verfügbar in TFS seit TFS 2013 • https://blogs.msdn.microsoft.com/bharry/2 013/06/03/visual-studio-2013/
  • 7. Was ist GIT? • Ein verteiltes Versionskontrollsystem • Ein Verzeichnis-basierendes Content Management System • Ein Baum-basierendes Versionsspeichersystem (Tree History Storage System) oder
  • 9. Was bedeutet verteilt? • Jeder verfügt über die komplette Historie • Alles wird offline erledigt • Keine zentrale Stelle • Änderungen können ohne Server getauscht werden
  • 10. Zentrale vs. De-Zentrale Versionskontrolle Zentraler Server (z.B. TFS, SVN, CVS, …) Remote Server
  • 11. (Ver-)Teilen von Commits Nico Local Repo Marc Repo Jan Repo Thomas Repo A B C A B C A B C A B C
  • 12. (Ver-)Teilen von Commits Nico Local Repo Marc Repo Jan Repo Thomas Repo A B C A B C A B C A B C Remote Repo (z.B. TFS, VSTS) A B C D D D D D
  • 13. Branches • Branches in GIT verfolgen eine andere Philosophie als in TFVC • GIT Branches sind leichtgewichtig • GIT Branch-Inhalte sind im gleichen Verzeichnis Fragestellungen • Lokale vs. Remote Branches • Kurz- vs. Langfristige Branches
  • 15. Begriffe Branching • Merge: Integrieren der Änderungen in einen Zielbranch, im Ziel-Branch entsteht ein neuer Commit • Rebase: 1:1 Wiedergabe von Commits auf einem Ziel-Branch, im Zielbranch werden die Original-Commits „angefügt“ • Fork: Isolierte Kopie eines Repositories • Pull Request: Änderungen zur Übernahme „anmelden“, Kontrollierte Übergabe von Änderungen, Review • Origin: Bezeichnung für Remote Repo; Konvention
  • 18. Merge Vorher: Nacher: Befehl: git merge topic Info: https://git-scm.com/docs/git-merge
  • 19. Rebase 1/3 • Vorher • Nachher Befehl: git rebase master git rebase master topic
  • 20. Rebase 2/3 • Vorher • Nachher Befehl: git rebase --onto master next topic
  • 21. Rebase 3/3 • Vorher • Nachher Befehl: git rebase --onto master next topic
  • 22. GIT Squash Unser Lieblings-Feature Mehre Commits zu einem Commit zusammenfassen Warnung: Nicht auf Master oder bereits „hochgeladenen“ Commits
  • 23. Git Squash Befehle: git reset --hard HEAD~12 git merge --squash HEAD@{1} git commit
  • 24. Demo: Squash und Pull Request – für ordnungs- liebende Menschen ☺
  • 25. Der „perfekte“ VS GIT-Arbeitsplatz • Visual Studio 2015+ / besser 2017 • GitFlow Addon für Visual Studio • GIT CMD Tools • PoshGIT (Powershell Addon) • Source Tree oder Tower
  • 27. GIT vs. TFVC • Fragestellung: • Ist GIT besser als TFVC? • Stärken TFVC • Skalierung/Performance bei großen Code-Basen • Skalierung/Performance bei großen und vielen Binärdateien • „Sicherheit“ / Zugriffssteuerung / Geistiges Eigentum • Stärken GIT • Verteiltes Arbeiten • Performant wenn nicht alte Vorgehensweisen 1:1 übernommen werden • Offline Fähigkeit
  • 28. Migration von TFVC nach GIT • Strategien • Toolgestützte Migration • Manuelle Migration • Tools • Web Access (120 Tage) • GIT-TF (Microsoft, Cross-Plattform) • GIT-TFS (Community, .NET) • GIT-SVN • …
  • 29. Git-Flow • Dezentral arbeiten bedeutet nicht ohne Konventionen zu arbeiten • Weit verbreitetes Branching Konzept für große Projekte ist GitFlow • http://nvie.com/posts/a- successful-git-branching- model/
  • 30. Umgang mit Binär-Dateien • GIT skaliert nicht gut bei (großen) Binär- Dateien • Große Repos sind schlecht für verteiltes Arbeiten • Auswege • Paketmanager (NuGet, etc.) für Abhängigkeiten verwenden • GIT-LFS verwenden • GIT-GVFS (experimental)*
  • 31. Demo: Large File Support (LFS) – für Schwergewichte
  • 32. Ein oder mehre GIT Repos? • Thema ist kontrovers diskutiert • https://jaxenter.com/microservices-mono-repo-vs-multiple- repositories-130148.html • Fragestellung: • Verteile ich meine Anwendung auf ein oder mehre Repos? • Ist ein Repo kontraproduktiv zu Vorgehensweisen und Architektur-Themen wie Micro-Services, …?
  • 33. Scaling GIT • Microsoft 1ES Initiative • GIT arbeitsfähig für richtig große GIT Repos machen • Ca. 280 GB Windows + Office Code-Basis • GIT GVFS - Git Virtual File System • https://github.com/Microsoft/ gvfs
  • 34. Ein bisschen Spaß am Ende ... • Gource: http://gource.io/
  • 35. Demo: Roundtrip Build Release und ein etwas Lustiges am Ende
  • 37. Wir unterstützen Sie KONTAKT Nico.Orschel@aitgmbh.de +49 151 55052624 @nicoorschel AIT GmbH & Co. KG Leitzstr. 45, 70469 Stuttgart www.aitgmbh.de BERATUNG Agile ALM und TFS .NET und Architektur ENTWICKLUNG Dienstleister für individuelle Lösungen mit .NET und Azure © AIT GmbH & Co. KG – Alle genannten und gezeigten Marken oder Warenzeichen sind eingetragene Marken oder eingetragene Warenzeichen ihrer jeweiligen Eigentümer und ggf. nicht gesondert gekennzeichnet. Aus dem Fehlen der Kennzeichnung kann nicht geschlossen werden, daß es sich bei einem Begriff oder einem Bild nicht um eine eingetragene Marke oder ein eingetragenes Warenzeichen handelt.
  • 38. Marc Müller Principal Consultant für DevOps, ALM, TFS /VS, .NET E-Mail: marc.mueller@4tecture.ch Webseite: http://www.4tecture.ch Schulungen: http://4tecture.ch/trainings Blog: http://4tecture.ch/blog Twitter: @muellermarc
  • 39. GIT-TF ▪ https://gittf.codeplex.com/ GIT-LFS ▪ https://git-lfs.github.com/ Posh-GIT ▪ https://github.com/dahlbyk/posh-git Tower ▪ https://www.git-tower.com/windows/ Source Tree ▪ https://de.atlassian.com/software/sourcetree
  • 40. Git-Flow ▪ http://nvie.com/posts/a-successful-git-branching-model/ Scaling Git (and some back story) ▪ https://blogs.msdn.microsoft.com/bharry/2017/02/03/scaling-git-and-some-back-story/ Git-GVFS ▪ https://github.com/Microsoft/gvfs ANNOUNCING GIT-LFS ON ALL VSO GIT REPOS ▪ https://blogs.msdn.microsoft.com/visualstudioalm/2015/10/01/announcing-git-lfs-on-all-vso- git-repos/
  • 41. Pull Request auf GitHub über einen Fork ▪ HTTP://BLOG.AITGMBH.DE/2017/04/26/PULL-REQUEST-AUF-GITHUB-UEBER-EINEN-FORK/ We’re discussing a common VC question – to fork or not to fork a Git repository ▪ https://blogs.msdn.microsoft.com/visualstudioalmrangers/2017/02/0 2/were-discussing-a-common-vc-question-to-fork-or-not-to-fork- a-git-repository/