24
Thomas Hirt Einführung in Codeversionierungssysteme FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Einführung in Codeversionierungssysteme

FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt

Embed Size (px)

Citation preview

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Einführung in Codeversionierungssysteme

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Inhalt

• Was ist ein Codeversionierungssystem?

• kurze Geschichte der Codeversionierung

• zentralisierte vs. verteilte Codeversionierungssysteme

• ein etwas genauerer Blick auf Subversion und Git

• unvollständige Marktübersicht

• Hosted Services

• Serverprodukte

• Client Software

• Codeversionierungssysteme und grosse Dateien

• Codeversionierung & FileMaker, Fragen & Antworten

• Hinweise zum Workshop

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Was ist ein Codeversionierungssystem?

• ein Hilfsmittel von Programmierern für Programmierer

• unterstützt den Entwicklungsprozess von Software, insb. im Team

• gedacht zur Speicherung von Reintextdateien, welche Code enthalten

• speichert alle Versionen einer Datei

• kann Unterschiede zwischen Versionen anzeigen

• Historisierung der Versionen in verzweigten Strukturen

• serverbasierte Varianten ermöglichen die gleichzeitige Arbeit mehrerer

Programmierer an einem Projekt und sogar an einer Datei

• hilft, Versionenkonflikte zu vermeiden oder aufzulösen

• unterstützt bei der Zusammenführung unterschiedlicher

Versionszweige

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

kurze Geschichte der Code Versionierung

Generation 1

• Verwaltung einzelner Dateien

• Dateien werden auf dem Server

gelockt

• nur eine Datei editieren

Vertreter

• SCCS (Source Code Control

System) 1972

• RCS (Revision Control System)

1982

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

kurze Geschichte der Code Versionierung

Generation 2

• zentralisierte Versionskontrolle

• Historie nur auf dem Server

• viele Dateien einer Version

auschecken

• viele Dateien als neue Version

einchecken

• Management von

Versionskonflikten

Vertreter

• CVS (Concurrent Version System)

1986

• SVN (Subversion) 2001

• Microsoft Visual SourceSafe

• Microsoft Team Foundation

Server

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Workflow Zentrale Versionsverwaltung

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

kurze Geschichte der Code Versionierung

Generation 3

• verteilte Versionskontrolle

• lokale Historie und Serverhistorie

• viele Dateien einer Version

auschecken

• viele Dateien als neue Version

einchecken

• Management von

Versionskonflikten

• ausgefeilte Methoden,

Entwicklungszweige zu

verschmelzen (Merge)

Vertreter

• Bazaar, 2005 (Ubuntu)

• Git, 2005 (Linus Torvalds)

• Mercurial, 2005 (Matt Mackall)

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Workflow Verteilte Versionsverwaltung

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

zentralisierte vs. verteilte Codeversionierungssysteme

zentralisiert

• älterer Ansatz

• immer nur eine Version auf dem

Client

• eine einheitliche Versionshistorie

auf dem Server verfügbar

• ein-/auschecken von Versionen

nur mit Serververbindung

möglich

verteilt

• modernerer Ansatz

• komplettes Repository mit vielen

Versionen auf dem Client

• Versionshistorien auf dem Client

und auf dem Server können

gleich oder verschieden sein

• ein-/auschecken von Versionen

ist auch nur lokal und somit

offline möglich

• Synchronisation von Repositories

sogar unter Clients möglich

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Subversion

• Version 1.0 erschien 2004 bei der Firma CollabNet

• seit 2009 Open Source Projekt bei der Apache Foundation

• zentrale Versionsverwaltung

• vermutlich aktuell am weitesten verbreitete Versionsverwaltung

• Implementierungen

• Server unter Linux und Windows sowie als Cloud-Hosting

• Clients unter Linux, Windows, Mac OS X

• Ordnerstruktur (Konvention)

• Trunk

• Branches

• Tags

• sichtbar sind jeweils alle Dateien einer bestimmten Version

• Standardwerk (Online-Buch): http://svnbook.red-bean.com/

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Subversion

Branch

Merge

Branch

Tag

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Git

• 2005 von Linus Torvalds für Entwicklung des Linux Kernels entwickelt

• hochentwickelt, nicht trivial, eigentlich ein Kommandozeilentool

• verteilte Versionsverwaltung

• Verbreitung nimmt seit Jahren stetig zu

• sehr stark beim Zusammenführen (merge/rebase) verschiedener Entwicklungszweige (branches)

• sichtbar sind jeweils alle Dateien eines Branches in einer bestimmten Version

• Implementierungen

• Kommandozeilentool

• Cloud Hosting und standalone Server für Linux & Windows

• kommerzielle GUI Clients für alle gängigen Betriebssysteme

• Dokumentation

• online: https://git-scm.com/doc

• print: "Version Control with Git" (O'Reilly)

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Git

remote repository

workspacelocal

repositorystaging

area

add commit

commit

push

pull or rebase

fetch

checkout or merge

diff

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Git

branch

merge

branch

Zeit

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

kleine MarktübersichtHosted Cloud Services

Anbieter Subversion Git Kostenbeispiel

Assemblabis 1 GB kostenlos≥ 21.55 €/Monat

Beanstalk ≥ 13.45 €/Monat (5 User)

Bitbucketbis 5 Benutzer kostenlos≥ 9.00 €/Monat

CloudForge ≥ 9.00 €/Monat (≥ 5 User)

CodeBase ≥ 2.75 €/Monat

GitHuböffentliche Repos kostenlos≥ 6.25 €/Monat

Unfuddle ≥ 17 €/Jahr (≤ 10 User)

Es gibt viele weitere Cloud-Anbieter für unterschiedliche Zielgruppen und mit unterschiedlichen Zusatzfeatures. Die obenstehende Liste ist nur eine kleine Auswahl renommierter Anbieter.

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

unvollständige MarktübersichtServerprodukte

Produkt OS SVN Git Kostenbeispiel

Apache & Subversion Open Source

VisualSVN ServerStandard $0Enterprise $950

Bonobo Git Server Open Source

Gitblit Open Source

Gitolite Open Source

GitLabCommunity Edition kostenlosEnterprise Edition ≥350 €/Jahr

Attlassian Stash$10 (10 Users)$1800 (25 Users)

MS Team Foundation Server $499 zzgl. CALs

Perforce Helix $320/User/Jahr

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

unvollständige Marktübersicht Client Software

Produkt OS SVN Git Kostenbeispiel

TortoiseSVN Open Source

SmartSVN Professional $99, Foundation $0

Syncro SVN Client $59

Versions $59

Cornerstone $59

GitHub Desktop kostenlos (Mac nur für GitHub)

Git Extensions Open Source

SmartGit $99, kostenlos für non-commercial

Tower $69

Es gibt diverse weitere Clients für Windows und Mac OS X. Unter Linux stehen nebst den Shell Clients der Basispakete auch mehrere Open Source Clients in den Repositories der Distributionen zur Verfügung.

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Codeversionierungssystemeund grosse Dateien

• Codeversionierungssysteme wurden erfunden für die Bewirtschaftung

von Textdateien bis einige MB Grösse.

• Codeversionierungssysteme waren ursprünglich nicht dazu gedacht,

grosse Binärdateien (BLOBs1) zu versionieren.

• Codeversionierungssysteme spielen ihre volle Stärke aus bei…

• der Bewältigung von Versionskonflikten.

• der Verschmelzung von Entwicklungszweigen.

• Viele Cloud-Anbieter setzen Limiten bei Dateigrössen (z.B. 100MB).

• Zu einigen Codeversionierungssystemen gibt es Add-Ons, die BLOBs in

einer gesonderten Speicherstruktur mit bewirtschaften können.

• Es gibt kommerzielle, proprietäre Codeversionierungssysteme, die auch

mit BLOBs gut umgehen können.

1 Binary Large OBjects

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Thinking out of the Box:Versionierung grosser Files in der Cloud

• Viele Cloud-Speicherdienste bieten Versionierung von Dateien an.

• Viele Cloud-Speicherdienste haben keine oder geringe Probleme mit

grossen bis sehr grossen Dateien.

• Eine weitergehende Bewirtschaftung der Versionen, wie z.B.

Versionsbeschreibungen, Seitenzweige, etc. existiert nicht.

• Es gibt eine breite Palette von Angeboten.

• kostenfrei, unverschlüsselt, datenschutzrechlich bedenklich

• kostenpflichtig, EEE (end-to-end encryption), datenschutzrechtlich

einwandfrei

• Mein aktueller, persönlicher Favorit: tresorit.com

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Codeversionierung & FileMakerFragen und Antworten

Q: Was kann bei FileMaker überhaupt versioniert werden?

A: Natürlich ganze *.fmp12-Dateien. Diese lassen sich als BLOBs direkt

versionieren.

A: Es gibt Methoden, einzelne Bestandteile von FileMaker-Datenbanken

als Reintext zu extrahieren und diesen Text in ein

Codeversionierungssystem einzuchecken.

A: Custom Functions lassen sich per Copy-Paste als Reintext auslesen

und einfügen.

A: Einige Plugins ermöglichen es, XML-Code aus der Zwischenablage als

Text zu extrahieren, bzw. XML-Code in die Zwischenablage einzufügen

(z.B. BaseElements Plugin, Clipboard Explorer, Clip Manager, …).

A: Mit dem MBS-Plugin kann man unter Mac OS X Skripten als Text

herauskopieren. Dies ist v.a. zu Dokumentationszwecken interessant.

Einfügen kann man die Skripten via MBS-Plugin nicht.

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Codeversionierung & FileMakerFragen und Antworten

Q: Wofür ist Codeversionierung im FileMaker-Umfeld wirklich nützlich?

A: Sicher für ganze FileMaker-Datenbankdateien. Wenn man z.B. nur relativ leere Entwicklerversionen der Datenbanken versioniert, spielen die Beschränkungen und Probleme mit grösseren Binärdateien nur eine geringe Rolle.

A: Aus meiner Sicht lassen sich Custom Functions wunderbar in Texteditoren erstellen und somit auch per Versionskontrolle verwalten. Richtig mühsam ist hingegen das Einpflegen neuer Versionen per Copy-Paste in bestehende Datenbanken.

A: Wer vom Datenbankkontext entkoppelte Skripten oder andere XML-Snippets hat, die er immer wieder verwendet, für den kann auch die Versionierung solcher Inhalte wertvoll sein. Der Einsatz eines Plugins als Import-/Export-Schnittstelle ist dann aber zwingend nötig.

A: Nicht zu vergessen sind auch weitere Projektinhalte, wie z.B. Dokumente zu Projektanforderungen, Bildmaterial oder Icons, Dokumentationen, Bedienungsanleitungen, etc.

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Codeversionierung & FileMakerFragen und Antworten

Q: Kann ein FileMaker-Entwickler von Codeversionierungssystemen gleich

stark profitieren, wie z.B. ein Entwickler, der C++ programmiert?

A: Leider ganz klar nicht, nein.

Q: Lohnt sich der Einsatz eines Codeversionierungssystems für alle

FileMaker-Entwickler?

A: Eher nicht, nein.

Q: Erleichtert der Einsatz eines Codeversionierungssystems die FileMaker-

Entwicklung im Team?

A: Nur unter gewissen Umständen. Wenn mehrere Entwickler an

derselben FileMaker-Datenbankdatei arbeiten müssen, hilft das

Codeversionierungssystem nicht. Da hilft nur Entwicklung auf einem

FileMaker-Server. Wenn aber die Aufgaben aufgeteilt werden können,

kann der Einsatz eines Codeversionierungssystems sehr wohl die

Arbeit und Koordination erleichtern sowie die Übersicht verbessern.

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Hinweise für den Workshop

• Entscheid betreffend Codeversionierungssystem

• verteilt

• Git

• Randbedingungen für die Client Software

• kostenlos oder Testversion verfügbar

• Windows und Mac OS X

• unabhängig vom Git-Hosting

• freiwillige Vorbereitung

• Download SmartGit Client: http://www.syntevo.com/smartgit/

• Installation SmartGit 30-Tage-Testversion

• falls nicht vorhanden: Texteditor installieren

Thomas Hirt

Einführung in Codeversionierungssysteme

FileMaker Konferenz 2015 Hamburg

www.filemaker-konferenz.com

Vielen Dank unseren Sponsoren

Danke für das Bewerten dieses Vortrages