Einsatz von Git im Unternehmen

30
Einsatz von Git im Unternehmen René Preißel Bjørn Stachmann Hamburg 25.1.2012

description

Immer mehr Open-Source-Projekte benutzen Git. Der Vorteil ist klar: Viele Entwickler arbeiten weltweit verteilt, zeitlich versetzt und nur lose gesteuert an einem Projekt. Das passt hervorragend zum dezentralen Ansatz von Git. Git untersützt die benötigten Workflows für eine solche Projektorganisation hervorragend - denn dafür wurde es entwickelt. Der Vortrag diskutiert die Fragen, die sich bei der Einführung von Git im eigenen Unternehmen stellen: - Welche Vorteile bringt Git für In-House-Projekte und Produktentwicklungen? - Wie geht man vor, wenn man Git einführen möchte? - Mit welchen Problemen ist beim Umstieg zu rechnen? - Sind die gleichen Workflows, die in der Open-Source-Welt funktionieren auch für die Unternehmenswelt sinnvoll? Am Beginn des Vortrages gibt es einem kurzen Einstieg in Git, so dass auch Git-Unerfahrene eine Idee von den Fähigkeiten einer dezentralen Versionsverwaltung erhalten. Abendvortrag oose Innovative Informatik GmbH, Tower Falkenried-Piazza, Straßenbahnring 7, 20251 Hamburg

Transcript of Einsatz von Git im Unternehmen

Page 1: Einsatz von Git im Unternehmen

Einsatz von Git im Unternehmen

R e n é P r e i ß e lB j ø r n S t a c h m a n n

H a m b u r g 2 5 . 1 . 2 0 1 2

Page 2: Einsatz von Git im Unternehmen

Über Uns

2

René Preißel [email protected]

Freiberuflicher Berater, Entwickler, Trainer

Bjørn [email protected]

Senior Software Engineeretracker GmbH

Mit * markierte Grafiken sind dem Buch „Workflows mit Git“, René Preißel, Björn Stachmann, dpunkt.verlag GmbH, 2012 entnommen

Page 3: Einsatz von Git im Unternehmen

Agenda

Git im Open-Source-UmfeldGrundlegende KonzepteGit im Unternehmen

EntwicklerEntwicklungsprozesseAdministration und BetriebQualitätssicherung

Grenzen von GitMigration nach GitZusammenfassung

3

Page 4: Einsatz von Git im Unternehmen

Git im Open-Source-Umfeld

4

„Subversion used to say CVS done right: with that slogan there is nowhere you can go. There is no way to do CVS right“, Linus Torvalds, Mai 2007

http://www.youtube.com/watch?v=4XpnKHJAok8

Page 5: Einsatz von Git im Unternehmen

Google-Trends

5

Page 6: Einsatz von Git im Unternehmen

Projekte und Tools

6

EclipseNetbeansIntelliJVisualStudioXCodeJenkins / HudsonTortoiseGitGerrit - Code ReviewJiraMaven...

Linux KernelGnome und KDEDebianEclipsePerl und PerlAndroidJBossPostgressSpring FrameworkRuby On RailsjQuery...

Page 7: Einsatz von Git im Unternehmen

Open-Source-Anforderungen

7

Intellectual Property Hohe Performance

Flexibilität

Motivation

Viele Entwickler - Viele Standorte

Keine zeitliche Koordination

Sicherheit vor Manipulation

Zusammenführung

Freiheit zum Forking

Autonomie des Entwicklers

„Diese Zeilen sind von mir“

Easy to Contribute

Page 8: Einsatz von Git im Unternehmen

Git Konzepte

Jeder Entwickler hat einen Workspace und ein vollständiges Repository

Neue Versionen (Commits) werden nur lokal angelegt

Zwischen Repositorys können Commits mit Pull und Push ausgetauscht werden

Alle Repositorys sind prinzipiell gleichwertig.

8

* aus „Workflows mit Git“

Page 9: Einsatz von Git im Unternehmen

Dezentrales Arbeiten

9

* aus „Workflows mit Git“

Page 10: Einsatz von Git im Unternehmen

Dezentrale Versionsnummern

Es gibt keinen zentralen Server der die Versionen nummerieren kann

Für alle Inhalte werden Hash-Werte als Schlüssel berechnet (SHA, 160 Bit)

Commit-Hash - Dezentrale Version des gesamten Projektes

Git versioniert immer das ganze Projekt

10

* aus „Workflows mit Git“

Page 11: Einsatz von Git im Unternehmen

Push und Pull

Nur nicht vorhandene Objekte werden übertragen (Wie eine dezentrale Datenbank)

Das Zusammenführen (Merging) von Commits findet immer lokal statt

11

Page 12: Einsatz von Git im Unternehmen

Branching und Merging

12

Branches sind nur Zeiger auf CommitsMerges erzeugen ein neues Commit

* aus „Workflows mit Git“

Page 13: Einsatz von Git im Unternehmen

Rebasing

13

* aus „Workflows mit Git“

Beim Rebasing werden die Änderungen von Commits kopiert und der Branch verschoben

Page 14: Einsatz von Git im Unternehmen

Cherry-Picking

14

Beim Cherry-Picking werden die Änderungen einzelner Commits kopiert

Page 15: Einsatz von Git im Unternehmen

Welche Features sind für

Unternehmen interessant?

15

Welche Features fehlen und welche Probleme müssen gelöst werden?

Page 16: Einsatz von Git im Unternehmen

Git im Unternehmen

16

Entwickler

Entwicklungsprozesse

Administration und Betrieb

Qualitätssicherung

Page 17: Einsatz von Git im Unternehmen

Möglichkeiten

Git für Entwickler

17

Flexible lokale ArbeitsweisenKleine Commits, Lokale Branches

Performante lokale OperationenGute Unterstützung von MergingGute Recherche-Möglichkeiten in der HistorieBisection - Unterstützung bei der FehlersucheOffline arbeiten ist möglichGit kann parallel zur zentralen Versionierung genutzt werden

Page 18: Einsatz von Git im Unternehmen

Maßnahmen

Trade-Offs

Entwickler - Trade-Offs

18

Starke Kommandozeilen-OrientierungKomplexität führt zu steilerer LernkurveLokale Administration notwendigKomplexere Workflows

z.B. Push als weiterer Schritt

Git-Einführung bewusst planenSchulung, Workshops, TutorialsDefinition von Workflows„Schritt für Schritt“-Anleitungen bereitstellen

Entwickler-Tools überprüfen

Page 19: Einsatz von Git im Unternehmen

Möglichkeiten

Entwicklungsprozess

19

Organisatorische FlexibilitätVerschiedene Workflows je Team möglich

Flexible Prozessabläufe werden unterstütztFeature-BranchesRelease-BranchesStaging-Pipelines

Nutzbarerer Historie, z.B. für Release-DokumentationPrototypen und experimentelle Weiterentwicklung werden vereinfacht

Page 20: Einsatz von Git im Unternehmen

Maßnahmen

Trade-Offs

Prozess - Trade-Offs

20

Weniger zentrale KontrolleWorkflows müssen definiert und verwaltet werdenFeature-Branches vs. Continuous Integration abwägen

Git-Einführung bewusst planenWorkflows erarbeiten

Branching-Strategie wählenRelease-Vorgehen definieren

Verantwortlichkeiten klären

Page 21: Einsatz von Git im Unternehmen

Diskussion Feature-Branches

21

Probleme mit Continuous IntegrationSpäte Integration führt zu größeren Merge-Aufwänden

* aus „Workflows mit Git“

Page 22: Einsatz von Git im Unternehmen

Möglichkeiten

Administration und Betrieb

22

Dezentrales Arbeiten an mehreren StandortenEffektive Werkzeuge für Repository-Manipulation

Zusammenführung von RepositorysTrennen von RepositorysHistorien entfernen

Einfaches und flexibles Server-SetupStandardmechanismenKein Problem mit Internet-Infrastruktur

Dezentrales BackupEinsatz von Git für eigene Server-Konfiguration

Page 23: Einsatz von Git im Unternehmen

Maßnahmen

Trade-Offs

Administration - Trade-Offs

23

Keine feingranulare Rechteverwaltung möglichFür große Binaries nur bedingt geeignetHistorien sind änderbar Entscheidung welche Repositorys gesichert werden müssenTools sind sehr an Unix-Infrastruktur ausgerichtet

Workflows für mehr Kontrolle definierenDefinition von Staging-Pipelines„Network of Trust“

Einsatz von Server-Werkzeugen für mehr Kontrollez.B. Gitolite oder Gerrit

Auslagerung an Dienstleister evaluierenz.B. GitHub

Page 24: Einsatz von Git im Unternehmen

Network of Trust

24

* aus „Workflows mit Git“

Page 25: Einsatz von Git im Unternehmen

Möglichkeiten

Qualitätssicherung

25

Feste Versionsstände durch HashesFeature-Branches erleichtern die Zuordnung von Änderungen zu FeaturesGenauere Recherche-Möglichkeiten sind möglichKontrollierter Umgang mit Bugfixes ist möglich, z.B. Cherry-PickingVersionierte Zusatzinformationen sind möglichNachträgliche Änderungen in Installationen werden nachvollziehbar

Kundenversion kann Hash enthalten

Page 26: Einsatz von Git im Unternehmen

Maßnahmen

Trade-Offs

Qualitätssicherung - Trade-Offs

26

Know-How in Git notwendigIntegration von Git in Issue-Tracking

Git-Einführung bewusst planenSchulung, Bücher

Recherche-Möglichkeiten erlernenDefinition von WorkflowsQA-Tools überprüfen

Page 27: Einsatz von Git im Unternehmen

Grenzen von Git

27

Hohe KomplexitätDezentraler AnsatzFokus auf KommandozeileViele Befehle mit sehr vielen ParameternBefehle sind sehr technisch orientiert und nicht immer selbsterklärend

Workflows sind nicht standardisiertKomplizierter Umgang mit SubmodulenHoher Ressourcenverbrauch bei großen binären DateienRepositorys können nur vollständig verwendet werdenAutorisierung nur auf dem ganzen Repository

Page 28: Einsatz von Git im Unternehmen

Migration (I)

28

1. Git lernen - Erfahrungen sammelna. Isoliert arbeiten, Parallel arbeiten

2. Entscheidungen treffena. Alle Projekte auf einmal migrieren?b. Welche Projekte migrieren?c. Bestehende Struktur übernehmen?d. Unterbrechung der Entwicklung möglich?e. Branching-Strategie / Workflows festlegenf. Werkzeuge auswählen

3. Neues Repository erzeugena. Branches findenb. Repository einrichtenc. Inhalte übernehmend. Ergebnisse überprüfen

Page 29: Einsatz von Git im Unternehmen

Migration(II)

29

4. Repository in Betrieb nehmena. Ankündigung / Notfallplan während

Umstellungb. Schulung der Entwicklerc. Letzte Änderungen aus alter Versionierung

nachziehend. Neues Repository bereitstellen, Entwickler

informierene. Null-Release durchführenf. Altes Repository auf Read-Only setzeng. Entwickler unterstützen

5. Aufräumen des Git-Repositorya. Temporäre Branches löschen

Page 30: Einsatz von Git im Unternehmen

Zusammenfassung

30

Git bietet interessante Möglichkeiten auch für UnternehmenGit verlagert mehr Kontrolle und Verantwortung zu den EntwicklernGit ermöglicht andere und flexible WorkflowsDie Einführung von Git muss sorgfältig vorbereitet werden