SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
1




Git versus SVN
Eine vergleichende Einführung in verteilte Versionskontrollsysteme (VCS)
anhand von „Git“ und dem zentralisierten VCS „Subversion“ (SVN)



                                                        http://bit.ly/PHPUG_JUN_GITvsSVN
2




Wer bin ich?
 Mario Müller

 TWT Interactive GmbH - Düsseldorf

 PHP (ZCE), Javascript, Python, Java

 Webservices, verteilte Systeme, Build Systeme,
 Frameworks

 MySQL, Postgresql, CouchDb, MongoDb

 Mac-Head & Linux Enthusiast

 Xing: http://bit.ly/mariomueller

 Twitter: http://twitter.com/xenji

 Github: http://github.com/xenji
3




Agenda


 Versionierung

   Warum?

   Lokal

   Zentral

   Dezentral
4




Agenda

 SVN

  Geschichte

  Begriffe

  Funktionsweise

  Vorteile & Einschränkungen

  Alleinstellungsmerkmale
5




Agenda

 Git

       Geschichte

       Begriffe

       Funktionsweise

       Vorteile & Einschränkungen

       Workflow & Team Organisation
6




Agenda


 Gegenüberstellung Vorteile & Nachteile

 Fazit

 Fragen

 Quellen
7
8




#1 Versionierung
9




Warum Versionierung?


 Protokollierung

 Archivierung

 Wiederherstellung
10




Lokale Versionierung
11




Merkmale

 Alle Arbeiten sind lokal

 Es gibt immer nur eine Realität

 Die Versionshistorie ist lokal

 Dateien werden als Ganzes versioniert

 Vergleiche sind möglich

 Performanz ist gut
12




RCS - Revision Control System
 Dateibasiertes Unix & Linux VCS

 Sehr alt (Anfang der 1980er) und          $ ci -u PyChart-1.26.1.tar.gz
                                           PyChart-1.26.1.tar.gz,v <-- PyChart-1.26.1.tar.gz
 Vorgänger von CVS, welches immer noch     enter description, terminated with single '.' or
                                           end of file:

 die gleiche Methode zur Dateiverwaltung
                                           NOTE: This is NOT the log message!
                                           >> Init Checkin
                                           >> .
 verwendet                                 initial revision: 1.1
                                           done



 Wird heute teilweise noch von Sys-
 Admins eingesetzt um Konfigurationen zu
 sichern

 Speichert immer den gesamten
 Dateistand (kein Delta).
13




Zentrale Versionierung
14




Merkmale

 Es gibt mehr als eine Realität (ein Server, n Workingcopies)

 Revisionen werden zentral verwaltet, Versionsnummern zentral vergeben

 Vergleiche sind nur direkt mit dem Server möglich

 Häufig wird ein Delta-basiertes Speicherverfahren verwendet, so bleiben
 die zu übertragenden Mengen gering

 Die Versionshistorie ist nur auf dem Server verfügbar

 Die Zentralisierung ermöglicht ein Zugriffs- und Rechtemanagement
15




Dezentrale Versionierung
16




Merkmale
 Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi-
 Workingcopy)

 Jede Workingcopy ist ein kompletter Klon mit allen Versionen

 Theoretisch gibt es keinen zentralen Server

 Das Repository ist lokal und unabhängig

 Alle Operationen sind lokal

 Es ist ein Mechanismus zur Synchronisierung mit einer entfernten Instanz
 vorhanden
17




  •   Active Responses: The total of responses excluding "No Opinion". (eg for
      git: 65 + 19 + 1 + 0)
  •   Approval %: The sum of best and ok responses divided by active responses,
      expressed as a percentage. (eg for git: (65 + 19) / 85)
                                                                                  Approval in %




VCS Survey (von M. Fowler)
18




#2 SVN - Subversion
19




Geschichte

 4 Jahre Entwicklung - Version 1.0 am 23.
 Feb. 2004

 Enwickelt von CollabNet

 Seit dem 10. Feb. 2010 ein Apache Top-
 Level Projekt

 Weiterentwicklung vom ebenfalls zentralen
 Versionierungstool „CVS“
20




Begriffe
              Revision

  Changeset
                         Delta / Diff

              Merge

                                  Branch
      Tag
21




Revision


 im Bereich der elektronischen
 Archivierung, insbesondere im Rahmen
 der Archivierung kaufmännischer Daten,
 für Nachprüfbarkeit, Unveränderbarkeit,
 Nachvollziehbarkeit (Wikipedia)
22




Changeset
 Eine Zusammenfassung von Änderungen einer
 Version. Häufig wird eine Notation verwendet, die
 die Operation mit / auf dem Bestandteil des
 Changesets erklärt:

    U = Updated

    D = Deleted

    A = Added

 Beispiel für ein Changeset:

U foo.txt
A bar.sh
D baz.php
23




Delta / Diff

 Das griechische Delta (∆) wird häufig für
 die Benennung von Differenzen
 verwendet.

 Im Fall von SVN handelt es sich sogar um
 das angewandte Speicherverfahren.

 Es werden immer nur die Unterschiede
 zwischen zwei Versionen festgehalten.
24




Tag

 Ein Tag ist eine Beschriftung einer
 bestimmten, einzelnen Revision. Man
 markiert einen definierten Stand mit einem
 Zeiger. Das Taggen eine „günstige“, wenig
 Ressourcen - verbrauchende Operation.

 Häufig wird das Taggen für die Defintion
 von Versionen verwendet. Tags werden
 als unveränderlich betrachtet, sind es aber
 de-facto in SVN nicht.
25




Branch
 Ein Branch (= Ast) ist meist eine Ab-/Verzweigung
 einer Hauptentwicklungslinie (meist „trunk“
 genannt).

 In SVN sind Branches Kopien von einer
 Ursprungsversion (In SVN über sog. „Cheap
 Copies“ realisiert).

 Häufig werden Branches dazu verwendet um
 verschiedene Versionsstände von einander zu
 trennen oder um Arbeitsabläufe zu
 parallelisieren.

 Bsp: trunk -> latest-test oder
 latest-test -> latest-production
26




Merge


 Das Mergen oder Verschmelzen ist die
 Zusammenführung von verschiedenen
 Änderungen in zwei Versionen einer Datei
 oder auch eines Dateibaumes.

 Bekanntes Beispiel ist das Mergen von
 zwei Branches
27




Funktionsweise (Beispiel)

 touch foo.bar

 svn add foo.bar

 svn commit foo.bar -m „Initial checkin“

 echo „baz“ > foo.bar

 svn commit foo.bar -m „Added baz“
28




Eine SVN Timeline
29




Vorteile
 Kostenfrei erhältlich

 Erprobt im Alltag

 Modern durch stetige Entwicklung als Apache
 Project

 Akzeptiert von den meisten Entwicklern

 Unterstützt von vielen IDEs, Clients und
 Shared Hosting Anbietern (z. B. SourceForge)

 Einfach in der Handhabung

 Komplexe Szenarien sind abbildbar.
30




Einschränkungen

 Viele Operationen sind aus
 Datenhaltungssicht „teuer“

 Ohne Server geht nichts

 Es werden nur Deltas verwaltet

 Automatisches Mergen ist in vielen Fällen
 keine schöne Erfahrung (= viele Konflikte
 bei offensichtlich eindeutigen Situationen)
31




Alleinstellungsmerkmale



 Properties auf Datei / Verzeichnisebene

 svn:externals um entfernte Repositories
 „hineinzulinken“
32




#3 Git
33




Wer hat‘s erfunden?
34




Linus Torvalds

 Initiator der Linux - Bewegung

 Wahrscheinlich der berühmteste
 Entwickler der heutigen Zeit

 Entwickelt aktiv am Linux Kernel

 Ist Erfinder von Git, jedoch nicht (mehr)
 der Hauptentwickler
35




Geschichte

 Gestartet im April 2005 um den damals
 verwendeten BitKeeper zu ersetzen von
 Linus Torvalds

 Aktuell in der Version 1.7 verfügbar

 Sehr junges Projekt

 Schnell adaptiert worden (GitHub,
 Gitorious)
36




Besonderheit: Merge Gedächtnis
Nach dem Merge weiss Git wer „seine Eltern sind“
37



                                                    Einige Zeit nach
PHP 5 Branch                      PHP 4 Branch    Erstellung des PHP
                                                 5.3 Branches wird ein
                                                   Fehler festgestellt.

                                                 Dieser Fehler wird im
                                                 5.3er Branch gefixt,
                                                  wo muss er denn
         PHP 5.3 Branch
                                                 noch gefixt werden?
                 Fehler!
                                                 Für Git kein Problem,
                 Woher?                          da es den Ursprung
               Bugfix übertragen                  der Datei und deren
                                                   Einzelteile kennt.

                                                 Die Historie verrät wo
                                                 der Fehler herkommt.
38




Begriffe
                      Staging

   Rebase
              Pull                 Dirty



     Remote                Clone

               Push
39




Clone


 Unter einem „Clone“ versteht man das
 Spiegeln einer vollständigen Historie in ein
 (lokales) Repository.

 Dabei wird jeder Commit, jeder Tag und jeder
 Branch mit einbezogen.
40




Remotes

 Branches werden in Git in zwei Zuständen
 verwaltet. Lokal und Remote. Ein Remote
 Branch ist eine Referenz auf einen lokalen
 Branch in einem entfernten Repository.



 Remotes werden interessant, wenn
 mehrere Entwickler am selben Branch
 arbeiten und den entwickelten Quellcode
 verteilen wollen.
41




Staging


 Hinzufügen von Dateien in einen virtuellen
 Bereich

 Alle Daten im Stage kommen in den
 nächsten Commit

 Commits sind dadurch auf CLI Ebene
 „zusammenbaubar“
42




Push

 Übermittelt den Inhalt eines Branches aus
 einem lokalen Repository an ein Remote
 Repository

 Transferiert Commit-By-Commit

 Aus Sicht des Remote Repositories sieht
 es aus, als hätte die Person lokal
 Commited
43




Pull


 „Zieht“ Änderungen aus einem Remote
 Repository

 Wenn mehrere Branches aus einem
 Remote existieren (z. B. nach einem Clone
 eines Repositories mit mehreren
 Branches), werden diese ebenfalls
 „gezogen“
44




Rebase
 Ähnelt dem Pull

 Zieht alle entfernten Änderungen in das
 lokale Repository

 läuft bis zu dem Punkt, in der Timeline, ab
 dem man selbst Veränderungen
 vorgenommen hat

 Wiederholt ab diesem Zeitpunkt alle
 Commits bis zum aktuellen Stand.

 Klarer Unterschied zum Merge: Rebase
 erzeugt keine neue Revision!
45




Dirty

 Als „dirty“ bezeichnet man Branches, die

    Änderungen gegenüber dem letzten Commit besitzen

    ihre Änderungen noch nicht (vollständig) im Staging haben

 Beispielkonstellation für den Zustand „dirty“

    Foo.txt (tracked, unchanged)           Grund für den Zustand „dirty“

    Bar.php (tracked, changed, unstaged)

    Baz.css (tracked, changed, staged)
46




Funktionsweise

 Git Repositories bestehen aus drei Komponenten:

   Tree Objekte

   Commit Objekte

   Blobs (Binary Large OBjects)

 Jedes Objekt bekommt eine repository-weit eindeutige ID in From einer
 SHA-1 Prüfsumme
47




Funktionsweise


 Alles wird in einem .git Ordner im Wurzelverzeichnis des Repositories
 gesammelt. (Keine verstreuten .svn Ordner mehr)

 Dateien werden nach ihrem Inhalt beurteilt, nicht nach ihrem Namen

   „Renaming-Detection“ ist also eingebaut

   Kein Linux/Windows „Conflict State“ Problem bei Groß- und Kleinschreibung
48




Arbeitsschritte
49




4-faltigkeit


 Eine Blob kann aus Sicht von Git vier Zustände annehmen

   untracked (nicht versioniert)

   unmodified (versioniert, aber nicht verändert)

   modified (versioniert, verändert, nicht im Stage)

   staged (versioniert, verändert und im Stage, aber nicht commited)
50




Multi-Branch Modell
51




Branching

 Gehört zum täglichen Arbeiten

 Ein Branch pro Feature / Bugfix / Change

 Lokales und entferntes Branchen möglich

 Saubere Fallunterscheidung

 Sichere Code-Basis, da definierter Stand
 und Kenntnis über den Ursprung des
 Stands (jeder Branch kennt den Punkt ab
 dem er divergiert (abgewichen) ist
52




Vorteile
 Schnell, da eine Vielzahl der Operationen
 lokal ist

 Unabhängig, da kein Server benötigt wird

 Sicher, da jeder alles besitzt (= verteiltes
 Backup)

 Modern, da Objekt-orientierte Sichtweise
 auf die Teilstücke des Versionsbaumes

 Vollkommene Freiheit, da jeder sich selbst
 organisieren kann.
53




Einschränkungen

 Kaum Möglichkeiten Teilstücke des Codes
 per ACL einzuschränken

 Komplizierter Einsatz unter Windows

 Kaum GUIs oder IDE Plugins

 „Ungemütliche Lernkurve“

 Vollkommene Freiheit
54




Workflow Modelle
55




Team Organisation
 Es sind verschiedene Ansätze zur
 Organisation von Teams entstanden

 Viele sind auch in der zentralisierten Welt
 vorhanden, aber wenig genutzt

 Canonical hat mit der Veröffentlichung von
 Bazaar in Verbindung mit Launchpad sehr
 gute Arbeit geleistet und diese möglichen
 Workflows dokumentiert (http://
 wiki.bazaar.canonical.com/Workflows)

 Hier stelle ich 3 Modelle beispielhaft vor
56




Workflow - Ein User

 Der „Freelancer - Workflow“

 Gut für einzelne Programmierer, die

   Weder Zeit

   noch Resourcen für das Setup eines SVN
   Servers haben

 Schlecht, wenn man kein Backup hat und
 die Festplatte / das Speichermedium
 verliert
57




Workflow - kleines Team

 Es gibt ein „blessed“ Repository, also ein
 zentrales Repository

 Jeder klont sich dieses Repository ein mal

 Ab dann werden Änderungen per push &
 pull verteilt

 Sinnvoll für kleine Teams (zwischen 2 und
 6 Leuten) mit überschaubaren Commit-
 Zahlen
58




Workflow - Integration Manager
59




Workflow - (benevolent) Dictator
60




Workflow Integ. Manager / Dictator

 Für große Teams geeignet

 Hoher Management-Aufwand

 Hohe Parallelisierung

 Sehr guter Zustand des Repository

 Der Integration Manager lohnt sich ab 10-15 Personen

 Das Dictator Modell erst bei 50+ Personen
61




Pro & Kontra
62




• Etabliert           • Langsam           • Schnell             • Steiniger Einstieg
• Techn. Ausgereift   • Historie „dumm“   • Mergen ist sicher   • Verlangt einen
• Verstanden          • Branching ist     & einfach             Paradigmen-
• Unterstützt         anstrengend         • Branching ist       wechsel
• Verfügbar           • Binärdaten-       erwünscht             • Nicht auf allen
• Rechte-             behandlung          • Ohne Server         OS „gut“
management            • Ohne Server       verwendbar            • Fehlendes
                      unbrauchbar         • Sehr intellig.      Rechte-
                                          Historie              management
63




Die richtigen Mittel für den
      richtigen Zweck
64




Der Umstieg / Lernaufwand lohnt sich ...
 wenn man selbst OpenSource Software schreibt und diese z. B. auf Github
 bereitstellen möchte

 wenn man viel im OpenSource Software Umfeld unterwegs ist, denn Git wird dort
 immer stärker

 wenn man große Mengen an Sourcen verwalten muss und Geschwindigkeit eine Rolle
 spielt

 wenn SVN mal wieder den Merge verrissen hat und man sehen will wie es auch
 anders geht

 wenn man die Definition von „Versionshistorie“ bei SVN auch so mager findet

 wenn man keine Versionskontrolle nutzt, die Sourcen lokal halten will und SVN Server
 doofe Ohren haben
65




Vielen Dank für die
 Aufmersamkeit!
66




Fragen
67




Quellen - lexikalisch

 ProGit - http://progit.org/book
                                      Bazaar Workflows - http://
 Wikipedia - http://                  wiki.bazaar.canonical.com/
 de.wikipedia.org/wiki/Git            Workflows

 Wikipedia - http://                  Git-SCM - http://git-scm.com/
 de.wikipedia.org/wiki/SVN
                                      Subversion - http://
 Version Control with SVN - http://   subversion.apache.org/
 svnbook.red-bean.com/
68




Quellen - Bilder
                                           aboutpixel.de Fragezeichen © Werner Linnemann
                                           aboutpixel.de Dialog © schwald-werbegestaltung
                                           aboutpixel.de up to date © Bernd Boscolo
                                           aboutpixel.de RISIKO! © Braun Alexander
 ProGit (Workflows)                         aboutpixel.de öffnen © Rainer Sturm
                                           aboutpixel.de Gemarkt © Simon Ledermann
                                           aboutpixel.de Zwilling © Rosita Sellmann
                                           aboutpixel.de Eierpappe © daylight
 Bazaar (Workflows)                         aboutpixel.de StrangZiehen © Sven Schneider
                                           aboutpixel.de starkes mädel © regine schöttl
                                           aboutpixel.de Partystimmung © Sebastian B.

 Wikipedia (Logos)                         aboutpixel.de Verkabelung © Werner Linnemann
                                           aboutpixel.de Eierlei... 3 © Steve_ohne_S
                                           aboutpixel.de starkes Blatt © Rainer Sturm
                                           aboutpixel.de Und die Akten türmen sich... © S. Lingk
 Diverse Aboutpixel.de Fotografen (siehe   aboutpixel.de Wie - Mist? © daylight
                                           aboutpixel.de doof hier! © Joana Virck-Alevra
 Box rechts)                               aboutpixel.de EXIT © Sven Schneider
                                           aboutpixel.de Schalenfrüchte © Nadine Dauwalter
                                           aboutpixel.de Zeit sparen © Arnim Schindler
                                           aboutpixel.de Tacitus 1 © Heinz Hasselberg
 Uni-grazt.at (Kanonen auf Spatzen)        aboutpixel.de Can u see the difference © Freive
                                           aboutpixel.de Pinguin © tina fritze
                                           aboutpixel.de Netz © Walter Christ
                                           aboutpixel.de Weiche © Tiberius K.

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Git & Github for beginners
Git & Github for beginnersGit & Github for beginners
Git & Github for beginners
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Git and Github
Git and GithubGit and Github
Git and Github
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Version Control with Git for Beginners
Version Control with Git for BeginnersVersion Control with Git for Beginners
Version Control with Git for Beginners
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Version Control with Git & GitHub
Version Control with Git & GitHubVersion Control with Git & GitHub
Version Control with Git & GitHub
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
Git 101
Git 101Git 101
Git 101
 
Git
GitGit
Git
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 

Andere mochten auch

Conception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data WarehouseConception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data Warehouse
Abderrahmane Filali
 
Organisation maintenance
Organisation maintenanceOrganisation maintenance
Organisation maintenance
mohamoha1
 
Culture Et Communication D’Entreprise
Culture Et Communication D’EntrepriseCulture Et Communication D’Entreprise
Culture Et Communication D’Entreprise
guestb103eb3
 
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
Viktoria Trosien
 

Andere mochten auch (20)

Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
 
Einsatz von Git im Unternehmen
Einsatz von Git im UnternehmenEinsatz von Git im Unternehmen
Einsatz von Git im Unternehmen
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!
 
Aus alt mach neu
Aus alt mach neuAus alt mach neu
Aus alt mach neu
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 
Einstieg in git
Einstieg in gitEinstieg in git
Einstieg in git
 
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
 
Campixx 2015: Shop SEO Battle - modified vs. PrestaShop vs. shopware
Campixx 2015: Shop SEO Battle - modified vs. PrestaShop vs. shopwareCampixx 2015: Shop SEO Battle - modified vs. PrestaShop vs. shopware
Campixx 2015: Shop SEO Battle - modified vs. PrestaShop vs. shopware
 
SEO-Basics: Die 9 häufigsten SEO-Anfänger-Fehler
SEO-Basics: Die 9 häufigsten SEO-Anfänger-FehlerSEO-Basics: Die 9 häufigsten SEO-Anfänger-Fehler
SEO-Basics: Die 9 häufigsten SEO-Anfänger-Fehler
 
Geschäftsmodelle 20 share
Geschäftsmodelle 20 shareGeschäftsmodelle 20 share
Geschäftsmodelle 20 share
 
Ecrire son business-plan - Garanti 0% BullShit - Par Guilhem Bertholet
Ecrire son business-plan - Garanti 0% BullShit - Par Guilhem BertholetEcrire son business-plan - Garanti 0% BullShit - Par Guilhem Bertholet
Ecrire son business-plan - Garanti 0% BullShit - Par Guilhem Bertholet
 
Les outils SEO à utiliser en 2013 - Seo Campus
Les outils SEO à utiliser en 2013 - Seo CampusLes outils SEO à utiliser en 2013 - Seo Campus
Les outils SEO à utiliser en 2013 - Seo Campus
 
Conception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data WarehouseConception et Réalisation d'un Data Warehouse
Conception et Réalisation d'un Data Warehouse
 
Organisation maintenance
Organisation maintenanceOrganisation maintenance
Organisation maintenance
 
Enquete regionsjob chercher un emploi en 2013
Enquete regionsjob chercher un emploi en 2013Enquete regionsjob chercher un emploi en 2013
Enquete regionsjob chercher un emploi en 2013
 
Culture Et Communication D’Entreprise
Culture Et Communication D’EntrepriseCulture Et Communication D’Entreprise
Culture Et Communication D’Entreprise
 
Les moteurs de recherche scientifique
Les moteurs de recherche scientifiqueLes moteurs de recherche scientifique
Les moteurs de recherche scientifique
 
Guide de travaux de chantiers
Guide de travaux de chantiersGuide de travaux de chantiers
Guide de travaux de chantiers
 
Fjord Trends 2016 (German)
Fjord Trends 2016 (German)Fjord Trends 2016 (German)
Fjord Trends 2016 (German)
 
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
Online-Strategie und Content-Marketing - authentisch Kunden begeistern und Um...
 

Ähnlich wie Git vs SVN - Eine vergleichende Einführung

Ähnlich wie Git vs SVN - Eine vergleichende Einführung (20)

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)
 
Git vs SVN DevCon 2011
Git vs SVN DevCon 2011Git vs SVN DevCon 2011
Git vs SVN DevCon 2011
 
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
 
Mercurial
MercurialMercurial
Mercurial
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
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...
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
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
 
git Vorstellung
git Vorstellunggit Vorstellung
git Vorstellung
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
 
Überblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeÜberblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle Versionsmanagementsysteme
 
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...
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
 
Regulatorics: Offside is when the referee whistles - DOAG 2018
Regulatorics: Offside is when the referee whistles - DOAG 2018Regulatorics: Offside is when the referee whistles - DOAG 2018
Regulatorics: Offside is when the referee whistles - DOAG 2018
 
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)
 
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
 
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitVerteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit Git
 
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
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 

Git vs SVN - Eine vergleichende Einführung

  • 1. 1 Git versus SVN Eine vergleichende Einführung in verteilte Versionskontrollsysteme (VCS) anhand von „Git“ und dem zentralisierten VCS „Subversion“ (SVN) http://bit.ly/PHPUG_JUN_GITvsSVN
  • 2. 2 Wer bin ich? Mario Müller TWT Interactive GmbH - Düsseldorf PHP (ZCE), Javascript, Python, Java Webservices, verteilte Systeme, Build Systeme, Frameworks MySQL, Postgresql, CouchDb, MongoDb Mac-Head & Linux Enthusiast Xing: http://bit.ly/mariomueller Twitter: http://twitter.com/xenji Github: http://github.com/xenji
  • 3. 3 Agenda Versionierung Warum? Lokal Zentral Dezentral
  • 4. 4 Agenda SVN Geschichte Begriffe Funktionsweise Vorteile & Einschränkungen Alleinstellungsmerkmale
  • 5. 5 Agenda Git Geschichte Begriffe Funktionsweise Vorteile & Einschränkungen Workflow & Team Organisation
  • 6. 6 Agenda Gegenüberstellung Vorteile & Nachteile Fazit Fragen Quellen
  • 7. 7
  • 9. 9 Warum Versionierung? Protokollierung Archivierung Wiederherstellung
  • 11. 11 Merkmale Alle Arbeiten sind lokal Es gibt immer nur eine Realität Die Versionshistorie ist lokal Dateien werden als Ganzes versioniert Vergleiche sind möglich Performanz ist gut
  • 12. 12 RCS - Revision Control System Dateibasiertes Unix & Linux VCS Sehr alt (Anfang der 1980er) und $ ci -u PyChart-1.26.1.tar.gz PyChart-1.26.1.tar.gz,v <-- PyChart-1.26.1.tar.gz Vorgänger von CVS, welches immer noch enter description, terminated with single '.' or end of file: die gleiche Methode zur Dateiverwaltung NOTE: This is NOT the log message! >> Init Checkin >> . verwendet initial revision: 1.1 done Wird heute teilweise noch von Sys- Admins eingesetzt um Konfigurationen zu sichern Speichert immer den gesamten Dateistand (kein Delta).
  • 14. 14 Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummern zentral vergeben Vergleiche sind nur direkt mit dem Server möglich Häufig wird ein Delta-basiertes Speicherverfahren verwendet, so bleiben die zu übertragenden Mengen gering Die Versionshistorie ist nur auf dem Server verfügbar Die Zentralisierung ermöglicht ein Zugriffs- und Rechtemanagement
  • 16. 16 Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein kompletter Klon mit allen Versionen Theoretisch gibt es keinen zentralen Server Das Repository ist lokal und unabhängig Alle Operationen sind lokal Es ist ein Mechanismus zur Synchronisierung mit einer entfernten Instanz vorhanden
  • 17. 17 • Active Responses: The total of responses excluding "No Opinion". (eg for git: 65 + 19 + 1 + 0) • Approval %: The sum of best and ok responses divided by active responses, expressed as a percentage. (eg for git: (65 + 19) / 85) Approval in % VCS Survey (von M. Fowler)
  • 18. 18 #2 SVN - Subversion
  • 19. 19 Geschichte 4 Jahre Entwicklung - Version 1.0 am 23. Feb. 2004 Enwickelt von CollabNet Seit dem 10. Feb. 2010 ein Apache Top- Level Projekt Weiterentwicklung vom ebenfalls zentralen Versionierungstool „CVS“
  • 20. 20 Begriffe Revision Changeset Delta / Diff Merge Branch Tag
  • 21. 21 Revision im Bereich der elektronischen Archivierung, insbesondere im Rahmen der Archivierung kaufmännischer Daten, für Nachprüfbarkeit, Unveränderbarkeit, Nachvollziehbarkeit (Wikipedia)
  • 22. 22 Changeset Eine Zusammenfassung von Änderungen einer Version. Häufig wird eine Notation verwendet, die die Operation mit / auf dem Bestandteil des Changesets erklärt: U = Updated D = Deleted A = Added Beispiel für ein Changeset: U foo.txt A bar.sh D baz.php
  • 23. 23 Delta / Diff Das griechische Delta (∆) wird häufig für die Benennung von Differenzen verwendet. Im Fall von SVN handelt es sich sogar um das angewandte Speicherverfahren. Es werden immer nur die Unterschiede zwischen zwei Versionen festgehalten.
  • 24. 24 Tag Ein Tag ist eine Beschriftung einer bestimmten, einzelnen Revision. Man markiert einen definierten Stand mit einem Zeiger. Das Taggen eine „günstige“, wenig Ressourcen - verbrauchende Operation. Häufig wird das Taggen für die Defintion von Versionen verwendet. Tags werden als unveränderlich betrachtet, sind es aber de-facto in SVN nicht.
  • 25. 25 Branch Ein Branch (= Ast) ist meist eine Ab-/Verzweigung einer Hauptentwicklungslinie (meist „trunk“ genannt). In SVN sind Branches Kopien von einer Ursprungsversion (In SVN über sog. „Cheap Copies“ realisiert). Häufig werden Branches dazu verwendet um verschiedene Versionsstände von einander zu trennen oder um Arbeitsabläufe zu parallelisieren. Bsp: trunk -> latest-test oder latest-test -> latest-production
  • 26. 26 Merge Das Mergen oder Verschmelzen ist die Zusammenführung von verschiedenen Änderungen in zwei Versionen einer Datei oder auch eines Dateibaumes. Bekanntes Beispiel ist das Mergen von zwei Branches
  • 27. 27 Funktionsweise (Beispiel) touch foo.bar svn add foo.bar svn commit foo.bar -m „Initial checkin“ echo „baz“ > foo.bar svn commit foo.bar -m „Added baz“
  • 29. 29 Vorteile Kostenfrei erhältlich Erprobt im Alltag Modern durch stetige Entwicklung als Apache Project Akzeptiert von den meisten Entwicklern Unterstützt von vielen IDEs, Clients und Shared Hosting Anbietern (z. B. SourceForge) Einfach in der Handhabung Komplexe Szenarien sind abbildbar.
  • 30. 30 Einschränkungen Viele Operationen sind aus Datenhaltungssicht „teuer“ Ohne Server geht nichts Es werden nur Deltas verwaltet Automatisches Mergen ist in vielen Fällen keine schöne Erfahrung (= viele Konflikte bei offensichtlich eindeutigen Situationen)
  • 31. 31 Alleinstellungsmerkmale Properties auf Datei / Verzeichnisebene svn:externals um entfernte Repositories „hineinzulinken“
  • 34. 34 Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit Entwickelt aktiv am Linux Kernel Ist Erfinder von Git, jedoch nicht (mehr) der Hauptentwickler
  • 35. 35 Geschichte Gestartet im April 2005 um den damals verwendeten BitKeeper zu ersetzen von Linus Torvalds Aktuell in der Version 1.7 verfügbar Sehr junges Projekt Schnell adaptiert worden (GitHub, Gitorious)
  • 36. 36 Besonderheit: Merge Gedächtnis Nach dem Merge weiss Git wer „seine Eltern sind“
  • 37. 37 Einige Zeit nach PHP 5 Branch PHP 4 Branch Erstellung des PHP 5.3 Branches wird ein Fehler festgestellt. Dieser Fehler wird im 5.3er Branch gefixt, wo muss er denn PHP 5.3 Branch noch gefixt werden? Fehler! Für Git kein Problem, Woher? da es den Ursprung Bugfix übertragen der Datei und deren Einzelteile kennt. Die Historie verrät wo der Fehler herkommt.
  • 38. 38 Begriffe Staging Rebase Pull Dirty Remote Clone Push
  • 39. 39 Clone Unter einem „Clone“ versteht man das Spiegeln einer vollständigen Historie in ein (lokales) Repository. Dabei wird jeder Commit, jeder Tag und jeder Branch mit einbezogen.
  • 40. 40 Remotes Branches werden in Git in zwei Zuständen verwaltet. Lokal und Remote. Ein Remote Branch ist eine Referenz auf einen lokalen Branch in einem entfernten Repository. Remotes werden interessant, wenn mehrere Entwickler am selben Branch arbeiten und den entwickelten Quellcode verteilen wollen.
  • 41. 41 Staging Hinzufügen von Dateien in einen virtuellen Bereich Alle Daten im Stage kommen in den nächsten Commit Commits sind dadurch auf CLI Ebene „zusammenbaubar“
  • 42. 42 Push Übermittelt den Inhalt eines Branches aus einem lokalen Repository an ein Remote Repository Transferiert Commit-By-Commit Aus Sicht des Remote Repositories sieht es aus, als hätte die Person lokal Commited
  • 43. 43 Pull „Zieht“ Änderungen aus einem Remote Repository Wenn mehrere Branches aus einem Remote existieren (z. B. nach einem Clone eines Repositories mit mehreren Branches), werden diese ebenfalls „gezogen“
  • 44. 44 Rebase Ähnelt dem Pull Zieht alle entfernten Änderungen in das lokale Repository läuft bis zu dem Punkt, in der Timeline, ab dem man selbst Veränderungen vorgenommen hat Wiederholt ab diesem Zeitpunkt alle Commits bis zum aktuellen Stand. Klarer Unterschied zum Merge: Rebase erzeugt keine neue Revision!
  • 45. 45 Dirty Als „dirty“ bezeichnet man Branches, die Änderungen gegenüber dem letzten Commit besitzen ihre Änderungen noch nicht (vollständig) im Staging haben Beispielkonstellation für den Zustand „dirty“ Foo.txt (tracked, unchanged) Grund für den Zustand „dirty“ Bar.php (tracked, changed, unstaged) Baz.css (tracked, changed, staged)
  • 46. 46 Funktionsweise Git Repositories bestehen aus drei Komponenten: Tree Objekte Commit Objekte Blobs (Binary Large OBjects) Jedes Objekt bekommt eine repository-weit eindeutige ID in From einer SHA-1 Prüfsumme
  • 47. 47 Funktionsweise Alles wird in einem .git Ordner im Wurzelverzeichnis des Repositories gesammelt. (Keine verstreuten .svn Ordner mehr) Dateien werden nach ihrem Inhalt beurteilt, nicht nach ihrem Namen „Renaming-Detection“ ist also eingebaut Kein Linux/Windows „Conflict State“ Problem bei Groß- und Kleinschreibung
  • 49. 49 4-faltigkeit Eine Blob kann aus Sicht von Git vier Zustände annehmen untracked (nicht versioniert) unmodified (versioniert, aber nicht verändert) modified (versioniert, verändert, nicht im Stage) staged (versioniert, verändert und im Stage, aber nicht commited)
  • 51. 51 Branching Gehört zum täglichen Arbeiten Ein Branch pro Feature / Bugfix / Change Lokales und entferntes Branchen möglich Saubere Fallunterscheidung Sichere Code-Basis, da definierter Stand und Kenntnis über den Ursprung des Stands (jeder Branch kennt den Punkt ab dem er divergiert (abgewichen) ist
  • 52. 52 Vorteile Schnell, da eine Vielzahl der Operationen lokal ist Unabhängig, da kein Server benötigt wird Sicher, da jeder alles besitzt (= verteiltes Backup) Modern, da Objekt-orientierte Sichtweise auf die Teilstücke des Versionsbaumes Vollkommene Freiheit, da jeder sich selbst organisieren kann.
  • 53. 53 Einschränkungen Kaum Möglichkeiten Teilstücke des Codes per ACL einzuschränken Komplizierter Einsatz unter Windows Kaum GUIs oder IDE Plugins „Ungemütliche Lernkurve“ Vollkommene Freiheit
  • 55. 55 Team Organisation Es sind verschiedene Ansätze zur Organisation von Teams entstanden Viele sind auch in der zentralisierten Welt vorhanden, aber wenig genutzt Canonical hat mit der Veröffentlichung von Bazaar in Verbindung mit Launchpad sehr gute Arbeit geleistet und diese möglichen Workflows dokumentiert (http:// wiki.bazaar.canonical.com/Workflows) Hier stelle ich 3 Modelle beispielhaft vor
  • 56. 56 Workflow - Ein User Der „Freelancer - Workflow“ Gut für einzelne Programmierer, die Weder Zeit noch Resourcen für das Setup eines SVN Servers haben Schlecht, wenn man kein Backup hat und die Festplatte / das Speichermedium verliert
  • 57. 57 Workflow - kleines Team Es gibt ein „blessed“ Repository, also ein zentrales Repository Jeder klont sich dieses Repository ein mal Ab dann werden Änderungen per push & pull verteilt Sinnvoll für kleine Teams (zwischen 2 und 6 Leuten) mit überschaubaren Commit- Zahlen
  • 60. 60 Workflow Integ. Manager / Dictator Für große Teams geeignet Hoher Management-Aufwand Hohe Parallelisierung Sehr guter Zustand des Repository Der Integration Manager lohnt sich ab 10-15 Personen Das Dictator Modell erst bei 50+ Personen
  • 62. 62 • Etabliert • Langsam • Schnell • Steiniger Einstieg • Techn. Ausgereift • Historie „dumm“ • Mergen ist sicher • Verlangt einen • Verstanden • Branching ist & einfach Paradigmen- • Unterstützt anstrengend • Branching ist wechsel • Verfügbar • Binärdaten- erwünscht • Nicht auf allen • Rechte- behandlung • Ohne Server OS „gut“ management • Ohne Server verwendbar • Fehlendes unbrauchbar • Sehr intellig. Rechte- Historie management
  • 63. 63 Die richtigen Mittel für den richtigen Zweck
  • 64. 64 Der Umstieg / Lernaufwand lohnt sich ... wenn man selbst OpenSource Software schreibt und diese z. B. auf Github bereitstellen möchte wenn man viel im OpenSource Software Umfeld unterwegs ist, denn Git wird dort immer stärker wenn man große Mengen an Sourcen verwalten muss und Geschwindigkeit eine Rolle spielt wenn SVN mal wieder den Merge verrissen hat und man sehen will wie es auch anders geht wenn man die Definition von „Versionshistorie“ bei SVN auch so mager findet wenn man keine Versionskontrolle nutzt, die Sourcen lokal halten will und SVN Server doofe Ohren haben
  • 65. 65 Vielen Dank für die Aufmersamkeit!
  • 67. 67 Quellen - lexikalisch ProGit - http://progit.org/book Bazaar Workflows - http:// Wikipedia - http:// wiki.bazaar.canonical.com/ de.wikipedia.org/wiki/Git Workflows Wikipedia - http:// Git-SCM - http://git-scm.com/ de.wikipedia.org/wiki/SVN Subversion - http:// Version Control with SVN - http:// subversion.apache.org/ svnbook.red-bean.com/
  • 68. 68 Quellen - Bilder aboutpixel.de Fragezeichen © Werner Linnemann aboutpixel.de Dialog © schwald-werbegestaltung aboutpixel.de up to date © Bernd Boscolo aboutpixel.de RISIKO! © Braun Alexander ProGit (Workflows) aboutpixel.de öffnen © Rainer Sturm aboutpixel.de Gemarkt © Simon Ledermann aboutpixel.de Zwilling © Rosita Sellmann aboutpixel.de Eierpappe © daylight Bazaar (Workflows) aboutpixel.de StrangZiehen © Sven Schneider aboutpixel.de starkes mädel © regine schöttl aboutpixel.de Partystimmung © Sebastian B. Wikipedia (Logos) aboutpixel.de Verkabelung © Werner Linnemann aboutpixel.de Eierlei... 3 © Steve_ohne_S aboutpixel.de starkes Blatt © Rainer Sturm aboutpixel.de Und die Akten türmen sich... © S. Lingk Diverse Aboutpixel.de Fotografen (siehe aboutpixel.de Wie - Mist? © daylight aboutpixel.de doof hier! © Joana Virck-Alevra Box rechts) aboutpixel.de EXIT © Sven Schneider aboutpixel.de Schalenfrüchte © Nadine Dauwalter aboutpixel.de Zeit sparen © Arnim Schindler aboutpixel.de Tacitus 1 © Heinz Hasselberg Uni-grazt.at (Kanonen auf Spatzen) aboutpixel.de Can u see the difference © Freive aboutpixel.de Pinguin © tina fritze aboutpixel.de Netz © Walter Christ aboutpixel.de Weiche © Tiberius K.

Hinweis der Redaktion

  1. Prot. von &amp;#xC4;nderungen Dauerhafte Archiv. Wiederherst. im Ernstfall oder auch um zu vergleichen!
  2. Prot. von &amp;#xC4;nderungen Dauerhafte Archiv. Wiederherst. im Ernstfall oder auch um zu vergleichen!
  3. Prot. von &amp;#xC4;nderungen Dauerhafte Archiv. Wiederherst. im Ernstfall oder auch um zu vergleichen!