Versionsmanagement Zentral oder Verteilt?

Slides:



Advertisements
Ähnliche Präsentationen
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

PHP Extension und Application Repository
Support.ebsco.com Lernprogramm zum Erstellen einer lokalen Sammlung.
Projekt Tools: Subversion, Wiki Nikolay Nachev Seminar StuPro cims cims.
Einführung in Subversion (SVN)
Einführung von Team System Ein Vorgehensvorschlag
PowerBuilder und SVN Erste Schritte bei der Versionsverwaltung von Softwareprojekten mit Subversion (SVN) PBUGG 2009, A. Schmidt.
Agenda Ein Fallbeispiel Übersicht Architektur Subversion (SVN)
Sebastian Peters TIB-Workshop zur DOI-Registrierung 3. November 2011 DataCite Technik Vertiefung.
Konzeption und Realisierung eines Software Configuration Management Systems Autor: Alex Rempel Referent: Prof. Dr. Elke Hergenröther Korreferent: Prof.
PinK Plattform für intelligente Kollaborationsportale Dr. Joachim Quantz, e.V. Berlin, 13. September 2005.
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
1 WS 2012 Software-Engineering II Versionsverwaltung.
Concurrent Versions System
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Mailserver-Installation mit LDAP-Schnittstelle für die Firma XYZ GmbH
GIT und Redmine Übung.
Aichinger Christian, Strasser Jürgen
IGEL UMS Universal Management Suite Oktober 2011 Florian Spatz
Automatische Übersetzungen mit Google
Kommunikation im Team verbessern mit Mindjet MindManager
Linux GOIT – Der Kurs. Linux GOIT – Der Kurs Geschichte Mainframes (IBM System/360) Workstation Personal Computer Stapelverarbeitung Workstation Mehrbenutzersystem.
Don`t make me think! A Common Sense Approach to Web Usability
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
Online Projekt-Management Planio GmbH Warschauer Str. 70A D Berlin Phone: (030)
Continuous Integration mit Jenkins
Versionsverwaltung für Visual Studio .NET mit Subversion
Andreas Rehm und Rainer Wolf Jeder Benutzer hält ein vollständiges Repository aller Dateien und Commits Zentrale Repositories sind möglich aber.
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Sesame Florian Mayrhuber
Softwaretechnikpraktikum: Vorlesung 2
Subversion für Anfänger und solche, die es noch werden wollen ;)
Mandantenfähigkeit in Moodle
Replikation und Synchronisation
Concurrent Versions System
Marco Behnke Git free & open source, distributed version control system Git.
Eclipse – PHP Tool Integration (PTI) Sven Kiera, TWT Interactive GmbH.
Thomas Schissler – artiso solutions GmbH Artur Speth – Microsoft Deutschland GmbH.
Der formelle Imperativ – the Imperative
Infopoint, , Jörg Wüthrich Infopoint "Social Coding", Jörg Wüthrich
->Prinzip ->Systeme ->Peer – to – Peer
Weg mit Fehlern, die kein Entwickler versteht …
ROS – Robot Operating System
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Datenbanksystementwicklung – Einführung BitKeeper – Knut Stolze
Git und TFS - Ein ungleiches Paar? zu Gast bei:.net User Group Ulm und Oberschwaben.
Prozesse mobil bearbeiten
Continuous Integration
Thomas Rau, Peter Brichzin Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten.
DevOps in der Praxis Umfrage Q4/2015
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Indico Meeting Dennis Klein 4. August Übersicht  Korrespondenz CERN  Trouble Ticket Queue  Integration GSI-Accounts  Subversion & Wiki  Todo.
, Jens Rettig1 Einsatz von Versionsverwaltungstools im ORACLE – Umfeld Dipl.-Inform. Jens Rettig
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
Einführung in Verteilte Versionskontrollsysteme am Beispiel von Git Diplominformatiker (BA), Git-Benutzer seit 2009 Daniel Böhmer Leibniz-Institut für.
Title of OpenOffice.org Slide Presentation Presentation Author Title Company Name.
Redetext für 15 Jahre Dig it! ???. Anlässlich zu unserem 15 jährigen Bestehen der dig it! GmbH möchte ich Euch begrüßen... Zu unserem 15 jährigen Jubiläum.
Das SVN Eclipse Plugin. Wofür ist SVN gedacht? Nutzung von SVN mit Eclipse Perspektive einrichten Repository einbinden Mit dem Repository arbeiten Konflikt.
Orxonox SVN Subversion in Orxonox: ORXONOX DevelopmentFinished Versions trunk Maintainer Version Almost always running branches Developer Version Copies.
CMIP6-DICAD – FU Berlin Thomas Schartner
WS2016: Container von A bis Z
?.
Continuous Integration mit TeamCity
Merging Jira – Das Unmögliche möglich machen Michael Lüer (ACP) Sönke Martens (ACP) catworkx GmbH
Virtualisierung von Web-Applikationen mit Docker
 Präsentation transkript:

Versionsmanagement Zentral oder Verteilt? Dr. R. Guderlei | eXXcellent solutions gmbh Tim Felgentreff | HPI Versionsmanagement Zentral oder Verteilt? 1

Vorteile Offline arbeiten möglich Daten werden redundant gehalten (Datenverlust weniger wahrscheinlich) Hohe Geschwindikeit der Operationen Häufigere, kleinere Commits Es wird mehr mit (lokalen) Branches gearbeitet 2

Agenda Verteilte Versionsverwaltung mit Git Git in der Praxis Fazit 3

Grundlegendes Verteilung: kein zentrales Repository Jeder Entwickler hält lokal eine Kopie des Repositories 4

Beispiele Kommerziell Open Source BitKeeper ClearCase Darcs Bazaar Mercurial Git ... 5

Warum Git und nicht xyz? Erprobt in großen Projekten (Linux-Kernel, QT, Ruby on Rails, Gnome, Android, X.org, …) Geschwindigkeit Tool-Support (IDEs, TortoiseGit...) GitHub 6

„SVN-ähnliche“ Struktur Änderungen werden von den lokalen Repositories in das remote-repo gepushed 7

„pull only“-Struktur Änderungen werden aus den lokalen repositories (selektiv) in das zentrale repository „gepulled“) → ala linux kernel 8

Repo-Hierarchien Nachbildung von (komplexen) workflows / organisationsstrukturen über hierachische anordnung von repositories 9

Betrieb Default: Zugriffssteuerung über Systemberechtigungen (git+ssh) Rechtemanagement: Gitosis (http://eagain.net/gitweb/?p=gitosis.git) Reviews: Gerrit (http://code.google.com/p/gerrit/) Eigene Rechteverwaltung Code – Reviews Privates Git Hosting: Gitorious, Bithug (http://gitorious.org/, http://github.com/rkh/bithug) 10

Befehle 11

Commit Messages [PRJ-4711] Tests für XYZ hinzugefügt Folgende Tests sind neu dazugekommen: * Szenario A * Szenario B * Prüfung auf ungültigen Parameter - 1 zeile überschrift - taggen von commits mit tracker-ids - ausführliche beschreibung des commits 12

„SVN-Mode“ pull <Arbeiten> commit -a push 13 Ersetzen durch console screenshot? 13

Branch/Rebase Neuer Branch für Feature/Bug Arbeit im Branch Rebase: Änderungen am Master-Branch regelmäßig integrieren Branch in Master mergen, ggf. Commits zusammenfassen push 14

Squashing Mit rebase --interactive kann man Mehrere Commits zusammenfassen (squash) Ein Commit in mehrere Commits zerlegen Die Reihenfolge von Commits verändern NIEMALS mit Commits machen , die sich bereits in einem remote repository befinden. NEVER EVER. (es sei denn man zwingt jeden Entwickler zu einem ‚git pull –force‘) 15

Git - rename Git unterstützt keine „intelligent renames“ Heuristische Erkennung von renames → renames sofort committen Bewusste Designentscheidung → Tradeoff mit Geschwindigkeit 16

Sonstige Features Stashing: temporäres Lagern von Änderungen Patches per Mail Bisect : Suche nach Commits (z.B. beim Bugs suchen) Cherry Picking: selektiv Commits übernehmen 17

Fazit Kaum Nachteile Viele Vorteile gegenüber zentralen SCM Komplexere Prozesse Relativ schlechte Windows-Integration Viele Vorteile gegenüber zentralen SCM Mehr Flexibilität im Workflow Robusteres System „besseres“ Arbeiten Integration bestehender SCMs (SVN, hg) GitHub (http://www.github.com) Wahl des DVCS hängt von Features ab (siehe intelligent renames) 18

Vielen Dank! Fragen? Gerne auch am Stand von eXXcellent solutions im Ausstellungsbereich 19

And then realize that nothing is perfect. Git is just. closer And then realize that nothing is perfect. Git is just *closer* to perfect than any other SCM out there. - Linus Torvalds

Tool Support ... Commands add diff rebase am difftool relink annotate fetch remote apply filter-branch remote-curl archive format-patch repack [ARGS] fsck replace bisect gc request-pull blame get-tar-commit-id reset branch grep revert bundle help rm checkout imap-send shortlog cherry init show cherry-pick instaweb show-branch chp lg st clean log stage clone merge stash co mergetool status COMMAND mv submodule commit name-rev svn completion.sh notes tag config pull whatchanged describe push

Tool Support TortoiseGit für Windows TortoiseSVN Port für msys-git Gut geeignet für Umsteiger Gute Integration mit dem Explorer Kein Support für komplexes Staging mit Line Commits

Tool Support GitX für Mac OS X EGit für Eclipse Sehr guter Support für komplexes Staging QuickLook und GitHub Integration EGit für Eclipse Eclipse integration wie Subversive Amend Commit Support Kein Support für Line Commits

Der SVN-Workflow ► Linearer Versionsverlauf ► Lange SVN Historie ► Lineares Branching für Features ► Kaum Parallele Entwicklung auf mehreren Branches

Der git-Workflow ► Feature, Feature-stable und Feature-bug-#XYZ Branches ► Parallele Entwicklung nach Motivation und Zeitdruck ► Stets stabile Branches ► Cherry-Picking einzelner Commits ► Merges von Tags aus Feature Branches ► Merges von Bugfixes in Stable Branches

Migration: SVN  git $ git svn clone svn+ssh://svn.dev.company.org/ $ git remote add origin git://git.dev.company.org/ $ git push origin master Import  easy Umstieg  peasy Nur Zehenspitzen  auch gut!

git-svn Der Einstieg in den Umstieg Gotchas svn co => git svn clone svn up => git svn rebase svn ci => git svn dcommit svn cp => git svn branch Lokale commits, rebases und branches Gotchas Commit Reihenfolge muss Upstream erhalten bleiben => Niemals mergen Rebase weniger mächtig als Merge

Erfahrungen im Umstieg diff stash push bisect pull cherry-pick merge Push vs Commit Bisects -> Kaputtes TeltowCar, Kaputtes AutobahnERP Kleine Commits  Leicht zu klassifizieren, leicht zu cherry-picken Am Anfang noch große Commits Branching am Anfang unnatürlich Code wird sauberer (git-diff : Oh, trailing whitespace, kein Comment!) log --graph

Erfahrungen im Umstieg Probleme liegen zu Beginnim scheinbaren Unwissen von „was ist aktuell?“ und dem „SVN-Workflow“ Schritte zur Lösung: Exzessives Branching und Merging Tagging an Abstimmungspunkten Engere Zusammenarbeit mit Quer- Merging zwischen Team-Mitgliedern um aktuell zu bleiben

Git Entwickelt von Linus Torwalds Ersatz für BitKeeper für die Kernel- Entwicklung Einsatz seit 2005 30

Features / Ziele Verteilte Entwicklung ermöglichen Hohe Geschwindigkeit Verwaltung großer Projekte Kryptographische Sicherung der Änderungshistorie Verwendung von Standard-Protokollen (ssh, http(s)) 31