Einführung in Verteilte Versionskontrollsysteme am Beispiel von Git Diplominformatiker (BA), Git-Benutzer seit 2009 Daniel Böhmer Leibniz-Institut für.

Slides:



Advertisements
Ähnliche Präsentationen
Versionsmanagement Zentral oder Verteilt?
Advertisements

Be.as WEB Technologie
Projekt Tools: Subversion, Wiki Nikolay Nachev Seminar StuPro cims cims.
Einer der Dienste im Internet
Einführung in Subversion (SVN)
„Ansicht Arbeitsbereich“ ist die nutzerspezifische Ansicht, in der alle Dokumente aufgelistet sind, die dem angemeldeten Benutzer zugeordnet sind. D.h.
Vorgehensweise Website Besprechung am 11. Februar 2008 Gründung und Partnerunternehmen der Wirtschaftsuniversität Wien.
PowerBuilder und SVN Erste Schritte bei der Versionsverwaltung von Softwareprojekten mit Subversion (SVN) PBUGG 2009, A. Schmidt.
CD-ROMs im Netz Direkter Zugriff auf CD-ROMs via Web-Browser Hartmut Jörg.
Content Management Systems
Software(technik)praktikum Tutorial: Subversion (SVN)
Fachpraktikum Graphische Benutzungsoberflächen Sommersemester 2008 Steffen Koch, Christoph Müller, Guido Reina, Christiane Taras, Michael Wörner Versionsverwaltung.
Werkzeuge und Softwareumgebung von Christian Michele.
1/15 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – CVS Projektgruppe KIMAS CVS Daniel Karuseit.
Teamorganisation: Versionsverwaltung
Teamorganisation: Versionsverwaltung
1 WS 2012 Software-Engineering II Versionsverwaltung.
Concurrent Versions System
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
GIT und Redmine Übung.
Software-Projektführung
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
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.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Softwaretechnikpraktikum: Vorlesung 2
Subversion für Anfänger und solche, die es noch werden wollen ;)
Concurrent Versions System
2 NETZE Vielleicht ohne es zu merken, haben Sie in den letzten Wochen mit und in Computernetzen gearbeitet. Welche Netze das sind und was man über sie.
Marco Behnke Git free & open source, distributed version control system Git.
Real World Windows Azure Die Cloud richtig nutzen.
Des eenen sin Uhl is des annern sin Nachtigall Wie ein Daten-GAU zur Softwareentwicklung beiträgt.
->Prinzip ->Systeme ->Peer – to – Peer
Datenbanksystementwicklung – Einführung BitKeeper – Knut Stolze
Musterlösung IT-Struktur an Schulen © M. Stütz, F. Wrede LEU - Zentrale Planungsgruppe Netze am Kultusministerium Baden-Württemberg zwei Programme im.
Git und TFS - Ein ungleiches Paar? zu Gast bei:.net User Group Ulm und Oberschwaben.
Herzlich Willkommen Roland Kistler Sales Engineer
Thomas Rau, Peter Brichzin Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten.
E-Archiv Durch die Präsentation führt sie: Jack Kraus ScanView ist ein Produkt der Allgeier IT GmbH (Feb 2010)
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Christoph Wirtz | Seminarvortrag EBC | Lehrstuhl für Gebäude- und Raumklimatechnik Ein Tool zum automatisierten Erstellen von Conversion Scripts.
, Jens Rettig1 Einsatz von Versionsverwaltungstools im ORACLE – Umfeld Dipl.-Inform. Jens Rettig
Ubuntu installieren und Erste Schritte ● Installation als einziges Betriebssystem ● Installation neben existenten Betriebssystemen ● Erster Überblick auf.
LINUX II Samba Verbindung mit Windows. Samba Übersicht ● Samba dient zur Verbindung von Linux-Clients mit Windows Rechnern ( samba-client ) sowie von.
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.
Einführung in Bittorrent ComputerClub 2, Seite: 1 / © SpeedPartner GmbH Einführung in Bittorrent.
Orxonox SVN Subversion in Orxonox: ORXONOX DevelopmentFinished Versions trunk Maintainer Version Almost always running branches Developer Version Copies.
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
Kaseya System Backup and Recovery
PuTTY in der paedML® 3.0 Novell
WS2016: Container von A bis Z
Google App Engine - Technische Stärken und Schwächen
SAP – Installation auf Windows Server 2008 R2 Enterprise
?.
Continuous Integration
Continuous Integration mit TeamCity
Mobile Learning Engineering (MLE)
SchulentwicklungsBudget - Überblick
G.Meininghaus, Konstanz
Virtualisierung von Web-Applikationen mit Docker
Fachberatertreffen 2017 Informationen und Update zu Schild-NRW
1.
Hilfe Dokumente.
Systemprogramm Time Machine
 Präsentation transkript:

Einführung in Verteilte Versionskontrollsysteme am Beispiel von Git Diplominformatiker (BA), Git-Benutzer seit 2009 Daniel Böhmer Leibniz-Institut für Troposphärenforschung 8. März 2012

Verteilte Versionskontrollsysteme/Git ● Ablauf ● Über Versionskontrollsoftware ● Fortschritt durch Git & Co. ● interaktiv/nach Bedarf: – Grundlagen Git mit Demo – Einsatzszenarien/Workflows fürs IfT ● Zwischenfragen erwünscht ● Englisches Vokabular ● Unterlagen elektronisch verfügbar

Was ist VCS? ● Engl. version control system (VCS) ● Management von Änderungen an einer/vielen Datei[en] ● Vorrangig Text-, aber auch Binärdateien ● Beispiele: ● RCS – nur 1 Datei, nur lokal ● CVS, MS Visual SourceSafe, SVN – viele Dateien ● Mecurial (Hg), Bazaar, Git – verteilte VCS

Wie funktioniert VCS? ● Repository („Archiv“) anlegen ● Dateien anlegen/bearbeiten ● Kleine Einheiten von Änderungen zu Commits zusammenfassen – Beispiele: ● „Fix bug in start script“, 1 Datei bearbeitet ● „Add button to edit user profile“, 2 Datei bearbeitet, 1 Datei hinzugefügt ● Menge an Commits [0..n] = Revision (bestimmter Versionsstand)

Was soll VCS leisten? ● Dateien vergleichen und Änderungen protokollieren ● Frühere Versionen von Dateien wiederherstellen ● divergierende Entwicklungspfade pflegen ● Zusammenführen von parallelen Entwicklungen ● Lokale Entwicklung vereinfachen und gemeinschaftliche Entwicklung ermöglichen

Was leisten Subversion & Co.? ● Dateien versionieren ● Mehrere Autoren an einem Repository ● Zentrale Verwaltung der Nutzer ● Locking für Dateien gegen gleichzeitiges Editieren ● Verschiedene Entwicklungszweige (SVN: schwierig zu verwenden)

Grenzen von Subversion & Co. ● Server-basiert ● Kein Arbeiten ohne Zugang zum Netzwerk ● Arbeitstempo abhängig von Netz und Server ● Keine automatische Lösung von Konflikten bei gleichzeitigen Änderungen in einer Datei ● Ausgerichtet auf lineare Entwicklungsstruktur

Verteilte VCS ● Engl. distributed version control system (DVCS) ● Kein Server notwendig ● Jeder »Client« hat gesamte History ● Neue Commits lokal gespeichert und benannt ● Austausch von Commits im 2. Schritt ● »offizielles« Repository durch Popularität

Fortschritte durch VCS ● Vollständig lokales Arbeiten ● Nichtlineare Versionshistorie ● automatisiertes Zusammenführen von parallelen Änderungen ● Integration von projektfremden Entwicklern ● Mehrwert für Entwickler ohne eigenen Account ● Zugang zu Änderungen fremder Entwickler ● Integration ohne Administrationsaufwand

Woher kommt Git? ● Bedarf durch Entwicklergemeinschaft des Linux- Kernels ● Vorhandene Systeme (Bitkeeper, CVS, SVN …) unbrauchbar ● Komplette Neuentwicklung von Linus Torvalds ● Ziele: verteilter Workflow, sicher, schnell

Philosophie von Git ● Alle Dateien in 1 Ordner, Git-Daten in /.git ● Änderungen mit beliebigem Editor durchführen ● Git-Kommandos erreichbar via ● Terminal (empfohlen) ● Grafische Oberfläche für Windows/Linux/Mac ● Plug-In für Editor, z.B. EGit für Eclipse

Demo

Git visualisiert serve r Alic e Bo b commit pushpull commit push commit pull merg e

Gitk: Merging

Gitk: Branching

Forken ist gut ● Forken (Entwicklungszweig spalten) Voraussetzung für Weiterentwicklung ● Zusammenführen der Zweige sehr einfach

Merge für Fortgeschrittene: Rebase Bildquelle: Git Community Book ● Merge: Pfade bleiben nachvollziehbar, Folge: zusätzlicher Merge-Commit ● Rebase: Pfad wird nachträglich »linearisiert«

Git ist sicher.

● Datenübertragung über etablierte Protokolle ● SSH ● HTTP(S) ● ● Einfache Datenstruktur ● Warnungen vor destruktiven Aktionen ● Trennung von History und Datenspeicher: „gelöschte“ Objekte verbleiben 14d im Speicher

Git ist schnell.

● Performance am Bsp. des Linux-Gits (ab 2005): ● `git clone $URL`: 8m 29s ● `git blame README`: ~1s ● `git status` mit 37'000 Dateien:~1s ● `git log | wc -l` (4'140'020 Zeilen):9,7s ● `git log -n 100 | grep -i linux`:<<1s ● `git pull` für 100 Commits von Github:6,4s

Arbeiten mit externem Projekt DWD Koordi nator Zentrales IfT-Repo Entwick ler A Entwick ler B

Private Eigenentwicklungen pflegen Zentrales IfT-Repo Entwick ler A Rechner von Entwickler Z masterprivate

Versionsnummern: SHA1-Hashes ● Nichtlinear → keine inkrementellen Nummern ● SHA1: kryptografischer Hash-Algorithmus ● Eindeutige Prüfsumme (Vgl.: Quersumme) über ● Inhalt aller Dateien ● Ordnerstruktur ● Commit-Metadaten wie Beschreibung, Autor etc. ● Lokal ermittelbar, weltweit eindeutig, 40-stellig, z.B e9abed50529fb9e7293a8f9eeda ● abkürzbar über die signifikanten Stellen: 5828

Start ● Einmalig pro Rechner: ● `git config --global user.name "Daniel Böhmer"` ● `git config --global user. ● Pro Projekt: ● Neues Repo anlegen: `git init` ODER ● Vorhandenes Repo klonen: `git clone ssh://mein- server.tropos.de/var/git/projekt.git`

Viel Spaß mit Git! ● Folien ● Link-Liste ● Beispiel-Repositories zum Herunterladen ● Auf