SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Einsatz von Git
im Unternehmen
     R e n é P r e i ß e l
  B 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
Über Uns
                                                                                 René Preißel
                                                                              rp@eToSquare.de

                                                                                Freiberuflicher
                                                                    Berater, Entwickler, Trainer




                                                                              Bjørn Stachmann
                                                                         bstachmann@yahoo.de

                                                                      Senior Software Engineer
                                                                               etracker GmbH



Mit * markierte Grafiken sind dem Buch „Workflows mit Git“,
René Preißel, Björn Stachmann, dpunkt.verlag GmbH, 2012 entnommen
                                                             2
Agenda
Git im Open-Source-Umfeld
Grundlegende Konzepte
Git im Unternehmen
 Entwickler
 Entwicklungsprozesse
 Administration und Betrieb
 Qualitätssicherung
Grenzen von Git
Migration nach Git
Zusammenfassung

                   3
Git im Open-Source-Umfeld

„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




                                      4
Google-Trends




      5
Projekte und Tools
Linux Kernel           Eclipse
Gnome und KDE          Netbeans
Debian                 IntelliJ
Eclipse                VisualStudio
Perl und Perl          XCode
Android                Jenkins / Hudson
JBoss                  TortoiseGit
Postgress              Gerrit - Code Review
Spring Framework       Jira
Ruby On Rails          Maven
jQuery                 ...
...

                   6
Open-Source-Anforderungen
Intellectual Property                  Hohe Performance

 „Diese Zeilen sind von mir“                    Flexibilität

         Easy to Contribute            Motivation

Autonomie des Entwicklers
                                   Keine zeitliche Koordination

               Viele Entwickler - Viele Standorte

 Freiheit zum Forking              Sicherheit vor Manipulation

          Zusammenführung
                               7
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.



     * aus „Workflows mit Git“

      8
Dezentrales Arbeiten




               * aus „Workflows mit Git“




         9
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



            * aus „Workflows mit Git“

            10
Push und Pull

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

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




      11
Branching und Merging




                              * aus „Workflows mit Git“



  Branches sind nur Zeiger auf Commits
  Merges erzeugen ein neues Commit
                    12
Rebasing




                              * aus „Workflows mit Git“


Beim Rebasing werden die Änderungen von Commits
kopiert und der Branch verschoben
                      13
Cherry-Picking




Beim Cherry-Picking werden die Änderungen
einzelner Commits kopiert
                  14
Welche Features
   sind für
 Unternehmen
 interessant?
 Welche Features
fehlen und welche
 Probleme müssen
  gelöst werden?
        15
Git im Unternehmen

Entwickler

Entwicklungsprozesse

Administration und Betrieb

Qualitätssicherung



                     16
Git für Entwickler
Möglichkeiten

   Flexible lokale Arbeitsweisen
     Kleine Commits, Lokale Branches
   Performante lokale Operationen
   Gute Unterstützung von Merging
   Gute Recherche-Möglichkeiten in der
   Historie
   Bisection - Unterstützung bei der
   Fehlersuche
   Offline arbeiten ist möglich
   Git kann parallel zur zentralen Versionierung
   genutzt werden

                       17
Entwickler - Trade-Offs
Trade-Offs
   Starke Kommandozeilen-Orientierung
   Komplexität führt zu steilerer Lernkurve
   Lokale Administration notwendig
   Komplexere Workflows
     z.B. Push als weiterer Schritt

Maßnahmen
   Git-Einführung bewusst planen
     Schulung, Workshops, Tutorials
     Definition von Workflows
     „Schritt für Schritt“-Anleitungen bereitstellen
   Entwickler-Tools überprüfen
                         18
Entwicklungsprozess
Möglichkeiten

   Organisatorische Flexibilität
     Verschiedene Workflows je Team möglich
   Flexible Prozessabläufe werden unterstützt
     Feature-Branches
     Release-Branches
     Staging-Pipelines
   Nutzbarerer Historie, z.B. für Release-
   Dokumentation
   Prototypen und experimentelle
   Weiterentwicklung werden vereinfacht

                      19
Prozess - Trade-Offs
Trade-Offs
   Weniger zentrale Kontrolle
   Workflows müssen definiert und verwaltet
   werden
   Feature-Branches vs. Continuous Integration
   abwägen

Maßnahmen
   Git-Einführung bewusst planen
   Workflows erarbeiten
     Branching-Strategie wählen
     Release-Vorgehen definieren
   Verantwortlichkeiten klären
                      20
Diskussion Feature-Branches




                                     * aus „Workflows mit Git“


 Probleme mit Continuous Integration
 Späte Integration führt zu größeren Merge-Aufwänden
                         21
Administration und Betrieb
Möglichkeiten
   Dezentrales Arbeiten an mehreren Standorten
   Effektive Werkzeuge für Repository-
   Manipulation
     Zusammenführung von Repositorys
     Trennen von Repositorys
     Historien entfernen
   Einfaches und flexibles Server-Setup
     Standardmechanismen
     Kein Problem mit Internet-Infrastruktur
   Dezentrales Backup
   Einsatz von Git für eigene Server-
   Konfiguration
                      22
Administration - Trade-Offs
Trade-Offs
   Keine feingranulare Rechteverwaltung möglich
   Für große Binaries nur bedingt geeignet
   Historien sind änderbar
   Entscheidung welche Repositorys gesichert werden
   müssen
   Tools sind sehr an Unix-Infrastruktur ausgerichtet

Maßnahmen
   Workflows für mehr Kontrolle definieren
     Definition von Staging-Pipelines
     „Network of Trust“
   Einsatz von Server-Werkzeugen für mehr Kontrolle
     z.B. Gitolite oder Gerrit
   Auslagerung an Dienstleister evaluieren
     z.B. GitHub
                           23
Network of Trust




            * aus „Workflows mit Git“




       24
Qualitätssicherung
Möglichkeiten

   Feste Versionsstände durch Hashes
   Feature-Branches erleichtern die Zuordnung
   von Änderungen zu Features
   Genauere Recherche-Möglichkeiten sind
   möglich
   Kontrollierter Umgang mit Bugfixes ist
   möglich, z.B. Cherry-Picking
   Versionierte Zusatzinformationen sind möglich
   Nachträgliche Änderungen in Installationen
   werden nachvollziehbar
     Kundenversion kann Hash enthalten

                       25
Qualitätssicherung - Trade-Offs
Trade-Offs
   Know-How in Git notwendig
   Integration von Git in Issue-Tracking


Maßnahmen
   Git-Einführung bewusst planen
    Schulung, Bücher
   Recherche-Möglichkeiten erlernen
   Definition von Workflows
   QA-Tools überprüfen

                       26
Grenzen von Git
Hohe Komplexität
 Dezentraler Ansatz
 Fokus auf Kommandozeile
 Viele Befehle mit sehr vielen Parametern
 Befehle sind sehr technisch orientiert und nicht
 immer selbsterklärend
Workflows sind nicht standardisiert
Komplizierter Umgang mit Submodulen
Hoher Ressourcenverbrauch bei großen binären
Dateien
Repositorys können nur vollständig verwendet
werden
Autorisierung nur auf dem ganzen Repository
                        27
Migration (I)
1. Git lernen - Erfahrungen sammeln
 a. Isoliert arbeiten, Parallel arbeiten
2. Entscheidungen treffen
 a. Alle Projekte auf einmal migrieren?
 b. Welche Projekte migrieren?
 c. Bestehende Struktur übernehmen?
 d. Unterbrechung der Entwicklung möglich?
 e. Branching-Strategie / Workflows festlegen
 f. Werkzeuge auswählen
3. Neues Repository erzeugen
 a. Branches finden
 b. Repository einrichten
 c. Inhalte übernehmen
 d. Ergebnisse überprüfen
                          28
Migration(II)
4. Repository in Betrieb nehmen
 a. Ankündigung / Notfallplan während
    Umstellung
 b. Schulung der Entwickler
 c. Letzte Änderungen aus alter Versionierung
    nachziehen
 d. Neues Repository bereitstellen, Entwickler
    informieren
 e. Null-Release durchführen
 f. Altes Repository auf Read-Only setzen
 g. Entwickler unterstützen
5. Aufräumen des Git-Repository
 a. Temporäre Branches löschen
                        29
Zusammenfassung

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



                  30

Weitere ähnliche Inhalte

Was ist angesagt?

'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!Benjamin Schmid
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?inovex GmbH
 
Git class german / english
Git class german / englishGit class german / english
Git class german / englishKevin Read
 
Gitことはじめ
GitことはじめGitことはじめ
Gitことはじめbleis tift
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easyinovex GmbH
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easyinovex GmbH
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISPeter Löwe
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python DevelopmentMartin Christen
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtB1 Systems GmbH
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 

Was ist angesagt? (20)

GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
 
Git im team
Git im teamGit im team
Git im team
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Git class german / english
Git class german / englishGit class german / english
Git class german / english
 
Gitことはじめ
GitことはじめGitことはじめ
Gitことはじめ
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
 

Andere mochten auch

Git - Eine Einführung
Git - Eine EinführungGit - Eine Einführung
Git - Eine Einführungfelbit
 
Überblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeÜberblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeAndreas Schreiber
 
Versionierung mit Git und SourceTree
Versionierung mit Git und SourceTreeVersionierung mit Git und SourceTree
Versionierung mit Git und SourceTreelucas_jahn
 
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-CommunityGit & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-CommunitySteffen Gebert
 
Git für Fortgeschrittene
Git für FortgeschritteneGit für Fortgeschrittene
Git für FortgeschritteneMayflower GmbH
 
Git case of the week4212.
Git case of the week4212.Git case of the week4212.
Git case of the week4212.Shaikhani.
 
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitVerteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitJan Dittberner
 
Do it the_git_way
Do it the_git_wayDo it the_git_way
Do it the_git_wayPeter Ukena
 
The development workflow of git github for beginners
The development workflow of git github for beginnersThe development workflow of git github for beginners
The development workflow of git github for beginnersGunjan Patel
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by stepBinh Quan Duc
 
Git and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentGit and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentLemi Orhan Ergin
 
Einführung in Git - GameCamp Munich 2011
Einführung in Git - GameCamp Munich 2011Einführung in Git - GameCamp Munich 2011
Einführung in Git - GameCamp Munich 2011renebruns
 

Andere mochten auch (20)

Einstieg in git
Einstieg in gitEinstieg in git
Einstieg in git
 
Git - Eine Einführung
Git - Eine EinführungGit - Eine Einführung
Git - Eine Einführung
 
Überblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeÜberblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle Versionsmanagementsysteme
 
Versionierung mit Git und SourceTree
Versionierung mit Git und SourceTreeVersionierung mit Git und SourceTree
Versionierung mit Git und SourceTree
 
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-CommunityGit & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
Git & Gerrit: Verteilte Softwareentwicklung und -reviews in der TYPO3-Community
 
Git für Fortgeschrittene
Git für FortgeschritteneGit für Fortgeschrittene
Git für Fortgeschrittene
 
Git. Transition.
Git. Transition.Git. Transition.
Git. Transition.
 
Git case of the week4212.
Git case of the week4212.Git case of the week4212.
Git case of the week4212.
 
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitVerteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit Git
 
Do it the_git_way
Do it the_git_wayDo it the_git_way
Do it the_git_way
 
Gitlab
GitlabGitlab
Gitlab
 
The development workflow of git github for beginners
The development workflow of git github for beginnersThe development workflow of git github for beginners
The development workflow of git github for beginners
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015
 
Git and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software DevelopmentGit and Git Workflow Models as Catalysts of Software Development
Git and Git Workflow Models as Catalysts of Software Development
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
ClearCase Basics
ClearCase BasicsClearCase Basics
ClearCase Basics
 
Git from SVN
Git from SVNGit from SVN
Git from SVN
 
Einführung in Git - GameCamp Munich 2011
Einführung in Git - GameCamp Munich 2011Einführung in Git - GameCamp Munich 2011
Einführung in Git - GameCamp Munich 2011
 

Ähnlich wie Einsatz von Git im Unternehmen

DWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersDWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersMarc Müller
 
Versionierung mit GIT
Versionierung mit GITVersionierung mit GIT
Versionierung mit GITgedoplan
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...Marc Müller
 
Enterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanEnterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanCollabNet
 
GitLab als alternative Entwicklungsplattform zu Github.com
GitLab als alternative Entwicklungsplattform zu Github.comGitLab als alternative Entwicklungsplattform zu Github.com
GitLab als alternative Entwicklungsplattform zu Github.comB1 Systems GmbH
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...Marc Müller
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und GerritStefan Lay
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtVerein FM Konferenz
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everythingcusy GmbH
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Groupware Linuxtag 2008 Cb
Groupware Linuxtag 2008 CbGroupware Linuxtag 2008 Cb
Groupware Linuxtag 2008 Cbbofh42
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnMartin Seibert
 
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...msohn
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Jürgen Gutsch
 

Ähnlich wie Einsatz von Git im Unternehmen (20)

DWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersDWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS Entwicklers
 
Versionierung mit GIT
Versionierung mit GITVersionierung mit GIT
Versionierung mit GIT
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
 
Enterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - GermanEnterprise Git Adoption Webinar - German
Enterprise Git Adoption Webinar - German
 
GitLab als alternative Entwicklungsplattform zu Github.com
GitLab als alternative Entwicklungsplattform zu Github.comGitLab als alternative Entwicklungsplattform zu Github.com
GitLab als alternative Entwicklungsplattform zu Github.com
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und Gerrit
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Deployment
DeploymentDeployment
Deployment
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Groupware Linuxtag 2008 Cb
Groupware Linuxtag 2008 CbGroupware Linuxtag 2008 Cb
Groupware Linuxtag 2008 Cb
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 

Mehr von oose

Tiefkühlpizza Softwaretesten und der Mann im Mond
Tiefkühlpizza Softwaretesten und der Mann im Mond Tiefkühlpizza Softwaretesten und der Mann im Mond
Tiefkühlpizza Softwaretesten und der Mann im Mond oose
 
Management -Das ist sowas von 2019!
Management -Das ist sowas von 2019!Management -Das ist sowas von 2019!
Management -Das ist sowas von 2019!oose
 
oose. Nein sagen
oose. Nein sagenoose. Nein sagen
oose. Nein sagenoose
 
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahr
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. HalbjahrWertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahr
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahroose
 
Feedback geben und nehmen - Abendvortrag_revised
Feedback geben und nehmen - Abendvortrag_revisedFeedback geben und nehmen - Abendvortrag_revised
Feedback geben und nehmen - Abendvortrag_revisedoose
 
Feedback geben und nehmen | oose-Vortragsfolien
Feedback geben und nehmen | oose-VortragsfolienFeedback geben und nehmen | oose-Vortragsfolien
Feedback geben und nehmen | oose-Vortragsfolienoose
 
Gehaltsmodell in Selbstorganisation
Gehaltsmodell in SelbstorganisationGehaltsmodell in Selbstorganisation
Gehaltsmodell in Selbstorganisationoose
 
Haqoona matata - Die Digitalisierung lebenslangen Lernens
Haqoona matata - Die Digitalisierung lebenslangen LernensHaqoona matata - Die Digitalisierung lebenslangen Lernens
Haqoona matata - Die Digitalisierung lebenslangen Lernensoose
 
Personalarbeit in selbstorganisierten Teams
Personalarbeit in selbstorganisierten TeamsPersonalarbeit in selbstorganisierten Teams
Personalarbeit in selbstorganisierten Teamsoose
 
Psychologisch sichere Teams | oose-Vortragsfolien
Psychologisch sichere Teams | oose-VortragsfolienPsychologisch sichere Teams | oose-Vortragsfolien
Psychologisch sichere Teams | oose-Vortragsfolienoose
 
Das Prinzip Verantwortung in selbstorganisierten Teams
Das Prinzip Verantwortung in selbstorganisierten TeamsDas Prinzip Verantwortung in selbstorganisierten Teams
Das Prinzip Verantwortung in selbstorganisierten Teamsoose
 
Wertstiftender Agile Coach - Ausbildung
Wertstiftender Agile Coach - AusbildungWertstiftender Agile Coach - Ausbildung
Wertstiftender Agile Coach - Ausbildungoose
 
Gehalt und Selbstorganisation: Gehalt neu denken
Gehalt und Selbstorganisation: Gehalt neu denkenGehalt und Selbstorganisation: Gehalt neu denken
Gehalt und Selbstorganisation: Gehalt neu denkenoose
 
Das kleine Einmaleins des agilen Produktmanagements
Das kleine Einmaleins des agilen Produktmanagements Das kleine Einmaleins des agilen Produktmanagements
Das kleine Einmaleins des agilen Produktmanagements oose
 
DMN - Was gibt es da zu Entscheiden?
DMN - Was gibt es da zu Entscheiden?DMN - Was gibt es da zu Entscheiden?
DMN - Was gibt es da zu Entscheiden?oose
 
Schöner scheitern – Die beliebtesten Missverständnisse im agilen RE
Schöner scheitern – Die beliebtesten Missverständnisse im agilen RESchöner scheitern – Die beliebtesten Missverständnisse im agilen RE
Schöner scheitern – Die beliebtesten Missverständnisse im agilen REoose
 
DMN – Was gibt es da zu entscheiden?
 DMN – Was gibt es da zu entscheiden? DMN – Was gibt es da zu entscheiden?
DMN – Was gibt es da zu entscheiden?oose
 
MARTE – UML für eingebettete Systeme
MARTE – UML für eingebettete SystemeMARTE – UML für eingebettete Systeme
MARTE – UML für eingebettete Systemeoose
 
A World In Motion
A World In MotionA World In Motion
A World In Motionoose
 
Produktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenProduktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenoose
 

Mehr von oose (20)

Tiefkühlpizza Softwaretesten und der Mann im Mond
Tiefkühlpizza Softwaretesten und der Mann im Mond Tiefkühlpizza Softwaretesten und der Mann im Mond
Tiefkühlpizza Softwaretesten und der Mann im Mond
 
Management -Das ist sowas von 2019!
Management -Das ist sowas von 2019!Management -Das ist sowas von 2019!
Management -Das ist sowas von 2019!
 
oose. Nein sagen
oose. Nein sagenoose. Nein sagen
oose. Nein sagen
 
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahr
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. HalbjahrWertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahr
Wertstiftender Agile Coach - Auszug aus KompetenzNavigator 1. Halbjahr
 
Feedback geben und nehmen - Abendvortrag_revised
Feedback geben und nehmen - Abendvortrag_revisedFeedback geben und nehmen - Abendvortrag_revised
Feedback geben und nehmen - Abendvortrag_revised
 
Feedback geben und nehmen | oose-Vortragsfolien
Feedback geben und nehmen | oose-VortragsfolienFeedback geben und nehmen | oose-Vortragsfolien
Feedback geben und nehmen | oose-Vortragsfolien
 
Gehaltsmodell in Selbstorganisation
Gehaltsmodell in SelbstorganisationGehaltsmodell in Selbstorganisation
Gehaltsmodell in Selbstorganisation
 
Haqoona matata - Die Digitalisierung lebenslangen Lernens
Haqoona matata - Die Digitalisierung lebenslangen LernensHaqoona matata - Die Digitalisierung lebenslangen Lernens
Haqoona matata - Die Digitalisierung lebenslangen Lernens
 
Personalarbeit in selbstorganisierten Teams
Personalarbeit in selbstorganisierten TeamsPersonalarbeit in selbstorganisierten Teams
Personalarbeit in selbstorganisierten Teams
 
Psychologisch sichere Teams | oose-Vortragsfolien
Psychologisch sichere Teams | oose-VortragsfolienPsychologisch sichere Teams | oose-Vortragsfolien
Psychologisch sichere Teams | oose-Vortragsfolien
 
Das Prinzip Verantwortung in selbstorganisierten Teams
Das Prinzip Verantwortung in selbstorganisierten TeamsDas Prinzip Verantwortung in selbstorganisierten Teams
Das Prinzip Verantwortung in selbstorganisierten Teams
 
Wertstiftender Agile Coach - Ausbildung
Wertstiftender Agile Coach - AusbildungWertstiftender Agile Coach - Ausbildung
Wertstiftender Agile Coach - Ausbildung
 
Gehalt und Selbstorganisation: Gehalt neu denken
Gehalt und Selbstorganisation: Gehalt neu denkenGehalt und Selbstorganisation: Gehalt neu denken
Gehalt und Selbstorganisation: Gehalt neu denken
 
Das kleine Einmaleins des agilen Produktmanagements
Das kleine Einmaleins des agilen Produktmanagements Das kleine Einmaleins des agilen Produktmanagements
Das kleine Einmaleins des agilen Produktmanagements
 
DMN - Was gibt es da zu Entscheiden?
DMN - Was gibt es da zu Entscheiden?DMN - Was gibt es da zu Entscheiden?
DMN - Was gibt es da zu Entscheiden?
 
Schöner scheitern – Die beliebtesten Missverständnisse im agilen RE
Schöner scheitern – Die beliebtesten Missverständnisse im agilen RESchöner scheitern – Die beliebtesten Missverständnisse im agilen RE
Schöner scheitern – Die beliebtesten Missverständnisse im agilen RE
 
DMN – Was gibt es da zu entscheiden?
 DMN – Was gibt es da zu entscheiden? DMN – Was gibt es da zu entscheiden?
DMN – Was gibt es da zu entscheiden?
 
MARTE – UML für eingebettete Systeme
MARTE – UML für eingebettete SystemeMARTE – UML für eingebettete Systeme
MARTE – UML für eingebettete Systeme
 
A World In Motion
A World In MotionA World In Motion
A World In Motion
 
Produktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenProduktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellieren
 

Einsatz von Git im Unternehmen

  • 1. Einsatz von Git im Unternehmen R e n é P r e i ß e l B 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
  • 2. Über Uns René Preißel rp@eToSquare.de Freiberuflicher Berater, Entwickler, Trainer Bjørn Stachmann bstachmann@yahoo.de Senior Software Engineer etracker GmbH Mit * markierte Grafiken sind dem Buch „Workflows mit Git“, René Preißel, Björn Stachmann, dpunkt.verlag GmbH, 2012 entnommen 2
  • 3. Agenda Git im Open-Source-Umfeld Grundlegende Konzepte Git im Unternehmen Entwickler Entwicklungsprozesse Administration und Betrieb Qualitätssicherung Grenzen von Git Migration nach Git Zusammenfassung 3
  • 4. Git im Open-Source-Umfeld „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 4
  • 6. Projekte und Tools Linux Kernel Eclipse Gnome und KDE Netbeans Debian IntelliJ Eclipse VisualStudio Perl und Perl XCode Android Jenkins / Hudson JBoss TortoiseGit Postgress Gerrit - Code Review Spring Framework Jira Ruby On Rails Maven jQuery ... ... 6
  • 7. Open-Source-Anforderungen Intellectual Property Hohe Performance „Diese Zeilen sind von mir“ Flexibilität Easy to Contribute Motivation Autonomie des Entwicklers Keine zeitliche Koordination Viele Entwickler - Viele Standorte Freiheit zum Forking Sicherheit vor Manipulation Zusammenführung 7
  • 8. 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. * aus „Workflows mit Git“ 8
  • 9. Dezentrales Arbeiten * aus „Workflows mit Git“ 9
  • 10. 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 * aus „Workflows mit Git“ 10
  • 11. Push und Pull Nur nicht vorhandene Objekte werden übertragen (Wie eine dezentrale Datenbank) Das Zusammenführen (Merging) von Commits findet immer lokal statt 11
  • 12. Branching und Merging * aus „Workflows mit Git“ Branches sind nur Zeiger auf Commits Merges erzeugen ein neues Commit 12
  • 13. Rebasing * aus „Workflows mit Git“ Beim Rebasing werden die Änderungen von Commits kopiert und der Branch verschoben 13
  • 14. Cherry-Picking Beim Cherry-Picking werden die Änderungen einzelner Commits kopiert 14
  • 15. Welche Features sind für Unternehmen interessant? Welche Features fehlen und welche Probleme müssen gelöst werden? 15
  • 17. Git für Entwickler Möglichkeiten Flexible lokale Arbeitsweisen Kleine Commits, Lokale Branches Performante lokale Operationen Gute Unterstützung von Merging Gute Recherche-Möglichkeiten in der Historie Bisection - Unterstützung bei der Fehlersuche Offline arbeiten ist möglich Git kann parallel zur zentralen Versionierung genutzt werden 17
  • 18. Entwickler - Trade-Offs Trade-Offs Starke Kommandozeilen-Orientierung Komplexität führt zu steilerer Lernkurve Lokale Administration notwendig Komplexere Workflows z.B. Push als weiterer Schritt Maßnahmen Git-Einführung bewusst planen Schulung, Workshops, Tutorials Definition von Workflows „Schritt für Schritt“-Anleitungen bereitstellen Entwickler-Tools überprüfen 18
  • 19. Entwicklungsprozess Möglichkeiten Organisatorische Flexibilität Verschiedene Workflows je Team möglich Flexible Prozessabläufe werden unterstützt Feature-Branches Release-Branches Staging-Pipelines Nutzbarerer Historie, z.B. für Release- Dokumentation Prototypen und experimentelle Weiterentwicklung werden vereinfacht 19
  • 20. Prozess - Trade-Offs Trade-Offs Weniger zentrale Kontrolle Workflows müssen definiert und verwaltet werden Feature-Branches vs. Continuous Integration abwägen Maßnahmen Git-Einführung bewusst planen Workflows erarbeiten Branching-Strategie wählen Release-Vorgehen definieren Verantwortlichkeiten klären 20
  • 21. Diskussion Feature-Branches * aus „Workflows mit Git“ Probleme mit Continuous Integration Späte Integration führt zu größeren Merge-Aufwänden 21
  • 22. Administration und Betrieb Möglichkeiten Dezentrales Arbeiten an mehreren Standorten Effektive Werkzeuge für Repository- Manipulation Zusammenführung von Repositorys Trennen von Repositorys Historien entfernen Einfaches und flexibles Server-Setup Standardmechanismen Kein Problem mit Internet-Infrastruktur Dezentrales Backup Einsatz von Git für eigene Server- Konfiguration 22
  • 23. Administration - Trade-Offs Trade-Offs Keine feingranulare Rechteverwaltung möglich Für große Binaries nur bedingt geeignet Historien sind änderbar Entscheidung welche Repositorys gesichert werden müssen Tools sind sehr an Unix-Infrastruktur ausgerichtet Maßnahmen Workflows für mehr Kontrolle definieren Definition von Staging-Pipelines „Network of Trust“ Einsatz von Server-Werkzeugen für mehr Kontrolle z.B. Gitolite oder Gerrit Auslagerung an Dienstleister evaluieren z.B. GitHub 23
  • 24. Network of Trust * aus „Workflows mit Git“ 24
  • 25. Qualitätssicherung Möglichkeiten Feste Versionsstände durch Hashes Feature-Branches erleichtern die Zuordnung von Änderungen zu Features Genauere Recherche-Möglichkeiten sind möglich Kontrollierter Umgang mit Bugfixes ist möglich, z.B. Cherry-Picking Versionierte Zusatzinformationen sind möglich Nachträgliche Änderungen in Installationen werden nachvollziehbar Kundenversion kann Hash enthalten 25
  • 26. Qualitätssicherung - Trade-Offs Trade-Offs Know-How in Git notwendig Integration von Git in Issue-Tracking Maßnahmen Git-Einführung bewusst planen Schulung, Bücher Recherche-Möglichkeiten erlernen Definition von Workflows QA-Tools überprüfen 26
  • 27. Grenzen von Git Hohe Komplexität Dezentraler Ansatz Fokus auf Kommandozeile Viele Befehle mit sehr vielen Parametern Befehle sind sehr technisch orientiert und nicht immer selbsterklärend Workflows sind nicht standardisiert Komplizierter Umgang mit Submodulen Hoher Ressourcenverbrauch bei großen binären Dateien Repositorys können nur vollständig verwendet werden Autorisierung nur auf dem ganzen Repository 27
  • 28. Migration (I) 1. Git lernen - Erfahrungen sammeln a. Isoliert arbeiten, Parallel arbeiten 2. Entscheidungen treffen a. Alle Projekte auf einmal migrieren? b. Welche Projekte migrieren? c. Bestehende Struktur übernehmen? d. Unterbrechung der Entwicklung möglich? e. Branching-Strategie / Workflows festlegen f. Werkzeuge auswählen 3. Neues Repository erzeugen a. Branches finden b. Repository einrichten c. Inhalte übernehmen d. Ergebnisse überprüfen 28
  • 29. Migration(II) 4. Repository in Betrieb nehmen a. Ankündigung / Notfallplan während Umstellung b. Schulung der Entwickler c. Letzte Änderungen aus alter Versionierung nachziehen d. Neues Repository bereitstellen, Entwickler informieren e. Null-Release durchführen f. Altes Repository auf Read-Only setzen g. Entwickler unterstützen 5. Aufräumen des Git-Repository a. Temporäre Branches löschen 29
  • 30. Zusammenfassung Git bietet interessante Möglichkeiten auch für Unternehmen Git verlagert mehr Kontrolle und Verantwortung zu den Entwicklern Git ermöglicht andere und flexible Workflows Die Einführung von Git muss sorgfältig vorbereitet werden 30