In vielen Programmiersprachen und in vielen Programmierumgebungen sind Codeversionierungssysteme seit Jahren eine Selbstverständlichkeit. Nicht so bei FileMaker.
Wir erfahren zuerst, was ein Codeversionierungssystem überhaupt ist. Wir sehen uns danach einige aktuelle Codeversionierungssysteme an und lernen einiges über ihre Eigenschaften sowie Vor- und Nachteile. Wir werden uns auch einen groben Überblick verschaffen, welche Softwareprodukte es am Markt für verschiedene Plattformen gibt (Client, Server, Hosted Services). Schliesslich werden wir uns damit beschäftigten, in welchem Umfang und in welchen Situationen auch FileMaker-Entwickler aus Sicht des Referenten von Codeversionierungssystemen profitieren können.
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
1. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Einführung in
Codeversionierungssysteme
2. 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
3. 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
4. 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
5. 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
6. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Workflow Zentrale Versionsverwaltung
7. 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)
8. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Workflow Verteilte Versionsverwaltung
9. 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
10. 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/
11. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Subversion
Branch
Merge
Branch
Tag
12. 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)
13. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Git
remote
repository
workspace
local
repository
staging
area
add commit
commit
push
pull or rebase
fetch
checkout or merge
diff
14. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Git
branch
merge
branch
Zeit
15. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
kleine Marktübersicht
Hosted Cloud Services
Anbieter Subversion Git Kostenbeispiel
Assembla
bis 1 GB kostenlos
≥ 21.55 €/Monat
Beanstalk ≥ 13.45 €/Monat (5 User)
Bitbucket
bis 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.
16. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
unvollständige Marktübersicht
Serverprodukte
Produkt OS SVN Git Kostenbeispiel
Apache & Subversion Open Source
VisualSVN Server
Standard $0
Enterprise $950
Bonobo Git Server Open Source
Gitblit Open Source
Gitolite Open Source
GitLab
Community Edition kostenlos
Enterprise Edition ≥350 €/Jahr
Attlassian Stash
$10 (10 Users)
$1800 (25 Users)
MS Team Foundation Server $499 zzgl. CALs
Perforce Helix $320/User/Jahr
17. 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.
18. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Codeversionierungssysteme
und 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
19. 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
20. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Codeversionierung & FileMaker
Fragen 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.
21. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Codeversionierung & FileMaker
Fragen 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.
22. Thomas Hirt
Einführung in Codeversionierungssysteme
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Codeversionierung & FileMaker
Fragen 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.
23. 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
24. 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