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/

DWX 2017 - GIT im Leben eines VS Entwicklers

  • 1.
    GIT im Leben einesVS Entwicklers Marc Müller 4tecture GmbH, Schweiz Nico Orschel AIT GmbH & Co. KG, Deutschland
  • 2.
    Unsere Vergangenheit und warumwir 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 undGIT 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 • Geschriebenvon 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
  • 8.
  • 9.
    Was bedeutet verteilt? • Jederverfügt über die komplette Historie • Alles wird offline erledigt • Keine zentrale Stelle • Änderungen können ohne Server getauscht werden
  • 10.
    Zentrale vs. De-ZentraleVersionskontrolle Zentraler Server (z.B. TFS, SVN, CVS, …) Remote Server
  • 11.
    (Ver-)Teilen von Commits NicoLocal Repo Marc Repo Jan Repo Thomas Repo A B C A B C A B C A B C
  • 12.
    (Ver-)Teilen von Commits NicoLocal 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 inGIT 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
  • 14.
  • 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
  • 16.
  • 17.
  • 18.
    Merge Vorher: Nacher: Befehl: git mergetopic 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 MehreCommits 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
  • 26.
  • 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 nachGIT • 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 arbeitenbedeutet 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 mehreGIT 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 • Microsoft1ES 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ß amEnde ... • Gource: http://gource.io/
  • 35.
  • 36.
  • 37.
    Wir unterstützen Sie KONTAKT Nico.Orschel@aitgmbh.de +49151 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ürDevOps, 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 aufGitHub ü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/