GIT gilt als die beliebteste und erfolgreichste verteilte Quellcode-Verwaltung überhaupt und ergänzt seit nun fast drei Jahren das Portfolio der ALM Plattform Team Foundation Server. Für eingefleischte TFVC Benutzer stellt Git oftmals noch Neuland dar und es gilt einigen Stolperfallen geschickt aus dem Weg zu gehen. Im Vortrag zeigen wir mit viel Hintergrundinformationen und Beispielen, welche Konzeptänderungen auf einen warten. Nebst Visual Studio zeigen wir auch Shell Extensions und die Kommandozeilen-Tools als Ergänzung zum gewohnten Tool-Sets. Themen wie Git-Flow oder Large File Support (LFS) dürfen natürlich ebenfalls nicht fehlen.
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
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
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
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)*
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
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/