fmk2015: einführung in codeversionierungssysteme by thomas hirt
Post on 21-Mar-2017
617 Views
Preview:
TRANSCRIPT
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
top related