Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
1Git versus SVN
2Wer bin ich? Mario Müller (@xenji) TWT Interactive GmbH - Düsseldorf Java, PHP, Python, Groovy FirstSpirit, JEE, Zend Fra...
3
4Warum Versionierung?
4Warum Versionierung? Protokollierung
4Warum Versionierung? Protokollierung Archivierung
4Warum Versionierung? Protokollierung Archivierung Wiederherstellung
5Zentrale Versionierung
6Merkmale
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies)
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummer...
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummer...
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummer...
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummer...
6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummer...
7Dezentrale Versionierung
8Merkmale
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy)
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein komplette...
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein komplette...
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein komplette...
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein komplette...
8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein komplette...
9  •   Active Responses: The total of responses excluding "No Opinion". (eg for      git: 65 + 19 + 1 + 0)  •   Approval %...
9  •   Active Responses: The total of responses excluding "No Opinion". (eg for      git: 65 + 19 + 1 + 0)  •   Approval %...
10SVN
11Geschichte
11Geschichte Version 1.0 am 20. Oktober 2000
11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet
11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet Seit dem 10. Feb. 2010 ein Apache Top- Level Projekt
11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet Seit dem 10. Feb. 2010 ein Apache Top- Level Projekt ...
12Begriffe
12Begriffe                            Branch     Changeset                 Revision       Tag
13Eine SVN Timeline
14Vorteile
14Vorteile Kostenfrei erhältlich
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt ge...
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt ge...
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt ge...
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt ge...
14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt ge...
15Einschränkungen
15Einschränkungen Ohne Server geht nichts
15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet
15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet Automatisches Mergen ist in vielen Fällen keine s...
15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet Automatisches Mergen ist in vielen Fällen keine s...
16Alleinstellungsmerkmale Properties auf Datei / Verzeichnisebene svn:externals um entfernte Repositories transparent „hin...
17Git
18
18
18Wer hat‘s erfunden?
19Linus Torvalds
19Linus Torvalds Initiator der Linux - Bewegung
19Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit
19Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit Entwickelt akt...
19Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit Entwickelt akt...
20Geschichte Gestartet im April 2005 um den damals verwendeten BitKeeper zu ersetzen Aktuell in der Version 1.7.x verfügba...
21Begriffe
21Begriffe                          Clone     Pull              Staging                        Push     Remote
22Clone Unter einem „Clone“ versteht man das Spiegeln einer vollständigen Historie in ein (lokales) Repository. Dabei wird...
23Remotes Branches werden in Git in zwei Zuständen verwaltet. Lokal und Remote. Ein Remote Branch ist eine Referenz auf ei...
24Staging Hinzufügen von Dateien in einen virtuellen Bereich Alle Daten im Stage kommen in den nächsten Commit Commits sin...
25Push Übermittelt den Inhalt eines Branches aus einem lokalen Repository an ein Remote Repository Transferiert Commit-By-...
26Pull „Zieht“ Änderungen aus einem Remote Repository Wenn mehrere Branches aus einem Remote existieren (z. B. nach einem ...
27Funktionsweise
27Funktionsweise Git Repositories bestehen aus drei Komponenten:   Tree Objekte   Commit Objekte   Blobs (Binary Large OBj...
27Funktionsweise
28Arbeitsschritte
29Vorteile Schnell, da eine Vielzahl der Operationen lokal ist Unabhängig, da kein Server benötigt wird Sicher, da jeder a...
30Einschränkungen Autorisierung per SSH unter Windows nur per PuTTY - Toolbox Einsatz unter Windows nur per mingw Kaum gut...
31Workflow Modelle
32Team Organisation Es sind verschiedene Ansätze zur Organisation von Teams entstanden Viele sind auch in der zentralisier...
33Workflow - Ein User Der „Freelancer - Workflow“ Gut für einzelne Programmierer, die   Weder Zeit   noch Resourcen für da...
34Workflow - kleines Team Es gibt ein „blessed“ Repository, also ein zentrales Repository Jeder klont sich dieses Reposito...
35Workflow - Integration Manager
36Workflow - (benevolent) Dictator
37Workflow Integ. Manager / Dictator Für große Teams geeignet Hoher Management-Aufwand Hohe Parallelisierung Sehr guter Zu...
38Enterprising Git
39Anforderungen an Git im Unternehmen Authentifizierung (LDAP, ADS, etc) Autorisierung (Gruppen, Rollen, Rechte) Automatis...
40Authentifizierung Ist mit Linux - Bordmitteln anstrengend Gitosis und Gitorious bieten Hilfe Integrierte directory-basie...
41Autorisierung Gitosis oder Gitorious helfen, man verlagert aber nur die Aufgabe Keine Mechanismen implementiert Implemen...
42 Backupsmmue-mbp:ProwlPHP mario$ git fast-export --all | less                                                           ...
43Alternativen
44Bazaar Von Canonical (Ubuntu) in Python geschrieben Aktivste Plattform: Launchpad Einfacher in der Handhabe Gefühlt lang...
45Mercurial Wir seit Q4 2010 von Atlassian weiter entwickelt Ist ebenfalls in Python geschrieben Aktivste Plattform: Bitbu...
46Vielen Dank für die Aufmersamkeit!
47Fragen
Nächste SlideShare
Wird geladen in …5
×

Git vs SVN DevCon 2011

3.323 Aufrufe

Veröffentlicht am

Meine Slides von der DevCon 2011, eine abgewandelte From der Slides von der PHPUG.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Git vs SVN DevCon 2011

  1. 1. 1Git versus SVN
  2. 2. 2Wer bin ich? Mario Müller (@xenji) TWT Interactive GmbH - Düsseldorf Java, PHP, Python, Groovy FirstSpirit, JEE, Zend Framework, Oxid NoSQL FTW! Mac-Head & Linux Enthusiast Github: http://github.com/xenji
  3. 3. 3
  4. 4. 4Warum Versionierung?
  5. 5. 4Warum Versionierung? Protokollierung
  6. 6. 4Warum Versionierung? Protokollierung Archivierung
  7. 7. 4Warum Versionierung? Protokollierung Archivierung Wiederherstellung
  8. 8. 5Zentrale Versionierung
  9. 9. 6Merkmale
  10. 10. 6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies)
  11. 11. 6Merkmale Es gibt mehr als eine Realität (ein Server, n Workingcopies) Revisionen werden zentral verwaltet, Versionsnummern zentral vergeben
  12. 12. 6Merkmale 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
  13. 13. 6Merkmale 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
  14. 14. 6Merkmale 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
  15. 15. 6Merkmale 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. 7Dezentrale Versionierung
  17. 17. 8Merkmale
  18. 18. 8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy)
  19. 19. 8Merkmale Es gibt viele, mehrdimensionale Realitäten (Multi-Master, Multi- Workingcopy) Jede Workingcopy ist ein kompletter Klon mit allen Versionen
  20. 20. 8Merkmale 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
  21. 21. 8Merkmale 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
  22. 22. 8Merkmale 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
  23. 23. 8Merkmale 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
  24. 24. 9 • 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)
  25. 25. 9 • 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)
  26. 26. 10SVN
  27. 27. 11Geschichte
  28. 28. 11Geschichte Version 1.0 am 20. Oktober 2000
  29. 29. 11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet
  30. 30. 11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet Seit dem 10. Feb. 2010 ein Apache Top- Level Projekt
  31. 31. 11Geschichte Version 1.0 am 20. Oktober 2000 Enwickelt von CollabNet Seit dem 10. Feb. 2010 ein Apache Top- Level Projekt Weiterentwicklung vom ebenfalls zentralen Versionierungstool „CVS“
  32. 32. 12Begriffe
  33. 33. 12Begriffe Branch Changeset Revision Tag
  34. 34. 13Eine SVN Timeline
  35. 35. 14Vorteile
  36. 36. 14Vorteile Kostenfrei erhältlich
  37. 37. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag
  38. 38. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt gesichert
  39. 39. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt gesichert Hohe Akzeptanz
  40. 40. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt gesichert Hohe Akzeptanz Unterstützt von vielen IDEs, Clients und Project Hosting Anbietern (z. B. SourceForge)
  41. 41. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt gesichert Hohe Akzeptanz Unterstützt von vielen IDEs, Clients und Project Hosting Anbietern (z. B. SourceForge) Einfache Handhabung
  42. 42. 14Vorteile Kostenfrei erhältlich Erprobt im OpenSource- und Unternehmens- alltag Stetige Entwicklung als Apache Projekt gesichert Hohe Akzeptanz Unterstützt von vielen IDEs, Clients und Project Hosting Anbietern (z. B. SourceForge) Einfache Handhabung Authc & Authz abbildbar
  43. 43. 15Einschränkungen
  44. 44. 15Einschränkungen Ohne Server geht nichts
  45. 45. 15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet
  46. 46. 15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet Automatisches Mergen ist in vielen Fällen keine schöne Erfahrung
  47. 47. 15Einschränkungen Ohne Server geht nichts Es werden nur Deltas verwaltet Automatisches Mergen ist in vielen Fällen keine schöne Erfahrung Jeder Commit muss einzeln gemergt werden
  48. 48. 16Alleinstellungsmerkmale Properties auf Datei / Verzeichnisebene svn:externals um entfernte Repositories transparent „hineinzulinken“
  49. 49. 17Git
  50. 50. 18
  51. 51. 18
  52. 52. 18Wer hat‘s erfunden?
  53. 53. 19Linus Torvalds
  54. 54. 19Linus Torvalds Initiator der Linux - Bewegung
  55. 55. 19Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit
  56. 56. 19Linus Torvalds Initiator der Linux - Bewegung Wahrscheinlich der berühmteste Entwickler der heutigen Zeit Entwickelt aktiv am Linux Kernel
  57. 57. 19Linus 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
  58. 58. 20Geschichte Gestartet im April 2005 um den damals verwendeten BitKeeper zu ersetzen Aktuell in der Version 1.7.x verfügbar Schnell adaptiert worden (GitHub, Gitorious)
  59. 59. 21Begriffe
  60. 60. 21Begriffe Clone Pull Staging Push Remote
  61. 61. 22Clone 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.
  62. 62. 23Remotes 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.
  63. 63. 24Staging 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“
  64. 64. 25Push Ü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 Commit‘ed
  65. 65. 26Pull „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“ Explizites „ziehen“ ist möglich -> nur „master“, nur „2.1.0“, nur „testing“
  66. 66. 27Funktionsweise
  67. 67. 27Funktionsweise 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
  68. 68. 27Funktionsweise
  69. 69. 28Arbeitsschritte
  70. 70. 29Vorteile Schnell, da eine Vielzahl der Operationen lokal ist Unabhängig, da kein Server benötigt wird Sicher, da jeder alles besitzt (= verteiltes Backup) Objekt-orientierte Sichtweise auf die Teilstücke des Versionsbaumes Vollkommene Freiheit, da jeder sich selbst organisieren kann.
  71. 71. 30Einschränkungen Autorisierung per SSH unter Windows nur per PuTTY - Toolbox Einsatz unter Windows nur per mingw Kaum gute GUIs oder IDE Plugins „Ungemütliche Lernkurve“ Vollkommene Freiheit
  72. 72. 31Workflow Modelle
  73. 73. 32Team 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 mögliche Workflows dokumentiert (http:// wiki.bazaar.canonical.com/Workflows) Hier stelle ich 3 Modelle beispielhaft vor
  74. 74. 33Workflow - 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
  75. 75. 34Workflow - 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
  76. 76. 35Workflow - Integration Manager
  77. 77. 36Workflow - (benevolent) Dictator
  78. 78. 37Workflow 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 lohnt sich erst bei 50+ Personen
  79. 79. 38Enterprising Git
  80. 80. 39Anforderungen an Git im Unternehmen Authentifizierung (LDAP, ADS, etc) Autorisierung (Gruppen, Rollen, Rechte) Automatisierte Backups Support Akzeptanz
  81. 81. 40Authentifizierung Ist mit Linux - Bordmitteln anstrengend Gitosis und Gitorious bieten Hilfe Integrierte directory-basierte Lösungen sind keine Vorhanden HTTP Push ermöglicht jedoch Autorisierung per Webserver Erweiterte Authentifizierung kann man per Hooks hacken
  82. 82. 41Autorisierung Gitosis oder Gitorious helfen, man verlagert aber nur die Aufgabe Keine Mechanismen implementiert Implementierung per Post-Commit / Post-Push Hooks
  83. 83. 42 Backupsmmue-mbp:ProwlPHP mario$ git fast-export --all | less Option 1:commit refs/heads/mastermark :281 Einfach kopierenauthor Mario Mueller <mario.mueller.work@gmail.com> 1305968206 +0200committer Mario Mueller <mario.mueller.work@gmail.com> 1305968206+0200data 55 Option 2:Resolved #6, but need some relyability fixing later onfrom :279 git fast-export --allM 100644 :280 src/Prowl/Connector.php
  84. 84. 43Alternativen
  85. 85. 44Bazaar Von Canonical (Ubuntu) in Python geschrieben Aktivste Plattform: Launchpad Einfacher in der Handhabe Gefühlt langsamer als Git
  86. 86. 45Mercurial Wir seit Q4 2010 von Atlassian weiter entwickelt Ist ebenfalls in Python geschrieben Aktivste Plattform: Bitbucket, Google Code Ist einfacher als Git, einfacher als Bazaar Performanter als Bazaar, wenig langsamer als Git
  87. 87. 46Vielen Dank für die Aufmersamkeit!
  88. 88. 47Fragen

×