CRE: Technik, Kultur, Gesellschaft· Staffel 1
CRE130 Verteilte Versionskontrollsysteme
Sonntag, 2. August 2009 · 2 h 42
Kapitelklicken springt direkt hin
Shownotes
Nach Jahren der Stagnation eröffnen verteilte Systeme neue Perspektiven der Kollaboration
media.metaebene.me/media/cre/cre-logo-3000x300…
Versionskontrollsysteme (DVCS) waren lange Zeit eine Domäne von Programmierern und Systemadministratoren, gewinnen aber in letzter Zeit auch zunehmend Bedeutung für andere kreative und kollaborative Tätigkeiten. Nachdem sich lange Zeit nur zentralistische Systeme wie CVS und Subversion auf dem Markt befanden, kommt jetzt eine neue Generation verteilter Systeme auf, die neue Voraussetzungen schaffen. Im Gespräch mit Tim Pritlove führt hukl in die Prinzipien der verteilten Versionskontrolle ein und bringt zahlreiche Beispiele, wie Entwicklung und Kollaboration durch neue Werkzeuge wie git, mercurial oder bazaar vorangebracht werden können.
Themen: Online und Offline arbeiten, die Vereinfachung von Forks, warum man Verteilte Versionskontrolle für den Friedensnobelpreis vorschlagen könnte, verlustfreie Vergangenheitserfassung, Interoperabilität von verteilen Versionskontrollsystemen, Integration mit alten Infrastrukturen, Social Coding und neue Kollaborationsstrukturen beim Programmieren, Verwendung von DVCS zur gemeinsamen Erarbeitung von Büchern, Nachträgliches Ändern der Versionsgeschichte, Migrationsstrategien.
•
John "hukl" Bader
•
GitHub (github.com/hukl)
•
Twitter (twitter.com/hukl)
•
Tim Pritlove
•
Twitter (twitter.com/timpritlove)
•
@timpritlove@mastodon.social (mastodon.social/@timpritlove)
•
Website (metaebene.me)
•
Spenden via PayPal (paypal.me/timpritlove)
•
Max Merz
(Shownotes)
•
Pinboard (pinboard.in/u:mxmerz)
•
Twitter (twitter.com/mxmerz)
Shownotes
• Intro
• CRE Intro
• Begrüßung
• Version Control (de.wikipedia.org/wiki/Versionsverwaltung)
• Distributed Version Control (en.wikipedia.org/wiki/Distributed_version_cont…)
• hukl (smyck.net)
• Geschichte
• de.wikipedia.org/wiki/Softwareentwicklung
• de.wikipedia.org/wiki/Systemadministration
• Konfigurationsdateien (de.wikipedia.org/wiki/Konfigurationsdatei)
• de.wikipedia.org/wiki/Versionsnummer
• Versionskontrollsystem (de.wikipedia.org/wiki/Versionsverwaltung)
• CVS (de.wikipedia.org/wiki/Concurrent_Versions_System)
• “Kupferstandard” (Tim)
• de.wikipedia.org/wiki/Klondike-Goldrausch
• “Als man mit seinen 2 mal 80MB-Festplatten noch der Held der Straße war.” (Tim)
• RCS (de.wikipedia.org/wiki/Revision_Control_System)
• VMS (de.wikipedia.org/wiki/Virtual_Memory_System)
• Virtual Address eXtension (VAX) (de.wikipedia.org/wiki/Virtual_Address_eXtension)
• de.wikipedia.org/wiki/Dateisystem
• Sysadmins nutzen immer noch RCS
• freebsd.org/cgi/man.cgi?query=rc.conf&sekt…
• de.wikipedia.org/wiki/Firewall
• de.wikipedia.org/wiki/FreeBSD
• Punktverzeichnisse (en.wikipedia.org/wiki/Hidden_file_and_hidden_d…)
• de.wikipedia.org/wiki/OpenBSD
• Open BSD (cre.fm/cre105-openbsd)
• en.wikipedia.org/wiki/OpenCVS
• Über hukl
• Apple Macintosh Performa 6200CD (everymac.com/systems/apple/mac_performa/specs/…)
• de.wikipedia.org/wiki/FreeHand
• de.wikipedia.org/wiki/Adobe_Director
• CCC (de.wikipedia.org/wiki/Chaos_Computer_Club)
• 1&1 (de.wikipedia.org/wiki/1%261_Internet_AG)
• Treiber (de.wikipedia.org/wiki/Ger%C3%A4tetreiber)
• AT-Befehle (de.wikipedia.org/wiki/AT-Befehlssatz)
• Subversion (SVN) (de.wikipedia.org/wiki/Apache_Subversion)
• en.wikipedia.org/wiki/Branching_%28revision_co…
• en.wikipedia.org/wiki/Merge_%28revision_contro…
• RCS, CVS, SVN
• CVS war der heiße Scheiß nach RCS
• RCS hat nur in einem Verzeichnis versioniert
• CVS geht von mehreren Mitarbeitern aus
• de.wikipedia.org/wiki/Mehrbenutzersystem
• de.wikipedia.org/wiki/Terminal_%28Computer%29
• en.wikipedia.org/wiki/Repository_%28version_co…
• SSH (de.wikipedia.org/wiki/Secure_Shell)
• de.wikipedia.org/wiki/Tunnel_%28Rechnernetz%29
• CVS ist nicht Internet-aware, kann man aber trotzdem über Internet machen
• RCS war Single-User
• Konflikt (en.wikipedia.org/wiki/Conflict_%28revision_con…)
• Locking (de.wikipedia.org/wiki/Lock)
• Merging (de.wikipedia.org/wiki/Merge)
• Cygnus Solutions (en.wikipedia.org/wiki/Cygnus_Solutions)
• Cygnus Solutions (toad.com/gnu/cygnus/index.html)
• de.wikipedia.org/wiki/TCP/IP
• Die allwissende Müllhalde (de.wikipedia.org)
• GCC (de.wikipedia.org/wiki/GNU_Compiler_Collection)
• das Interessante war die Kollaboration
• “Aber: CVS nervt.” (Tim)
• Verschieben von Verzeichnissen war schmerzhaft mit CVS
• “Subversion war dann eben so das Durchatmen nach 10 Jahren” (Tim)
• RCS und CVS konnten nur Text, SVN auch Binaries
• CVS war 10 Jahre lang alleine auf dem Markt
• Commits in CVS waren non-atomic
• en.wikipedia.org/wiki/Commit_%28data_managemen…
• Subversion hat das Prinzip von CVS vollendet
• Time Machine (de.wikipedia.org/wiki/Time_Machine_%28Apple%29)
• de.wikipedia.org/wiki/Rollback
• SVN ist Internet-aware
• Was macht ein Versionierungssystem?
• Ursprung der Versionierung
• diff (de.wikipedia.org/wiki/Diff)
• patch (de.wikipedia.org/wiki/Patch_%28Unix%29)
• Fix (de.wikipedia.org/wiki/Bugfix)
• “Ich bin heut voll dabei irgendwie. Ich muss heut einfach mal die Klondike abdecken, aber gleich steig ich aus.” (Tim)
• Branches (en.wikipedia.org/wiki/Branching_%28revision_co…)
• CVS mit Client-Server-Struktur
• CVS hat zentrales Repository
• Arbeitsablauf bei CVS
• de.wikipedia.org/wiki/Commit#Versionsverwaltung
• Arbeitskopie (“working copy”)
• Vorteil von CVS
• Konflikte und Konfliktmanagement
• ein Beispiel zu Konflikten mit Alice und Bob und Larry und Sally
• Alice und Bob (de.wikipedia.org/wiki/Alice_und_Bob)
• Branches (en.wikipedia.org/wiki/Branching_%28revision_co…)
• “Man muss sich halt einfach Softwareentwicklung vorstellen wie ein Bäumchen und das Bäumchen soll irgendwie wachsen.” (Tim)
• de.wikipedia.org/wiki/Baum_(Graphentheorie)
• en.wikipedia.org/wiki/Trunk_%28software%29
• de.wikipedia.org/wiki/Refactoring
• en.wikipedia.org/wiki/Merge_%28revision_contro…
• Kategorie 1/3: Versionskontrollsystem hat keine Probleme beim Mergen
• SVN schafft ab und zu einen Merge auch mal alleine
• Library (de.wikipedia.org/wiki/Programmbibliothek)
• Kategorie 2/3: Konflikte aufgrund der Architektur des Versionskontrollsystems
• moderne Versionskontrollsysteme tracken den Inhalt der Dateien anstatt der Dateien selbst
• Probleme von SVN
• Anekdote: einen Tag lang Merge-Konflikte beheben
• Warum ist Mergen so schmerzhaft?
• Hardlink (de.wikipedia.org/wiki/Harter_Link)
• Linus Torvalds (de.wikipedia.org/wiki/Linus_Torvalds)
• git (de.wikipedia.org/wiki/Git)
• “Branchen – who cares? Das Schwierige ist das Mergen.” (hukl)
• SVN kann nicht so wirklich gut mergen
• Merge Tracking
• Anekdote von Tim
• SVN hatte Probleme mit der Datenstruktur
• Berkeley DB (de.wikipedia.org/wiki/Berkeley_DB)
• Files tracken vs. Content tracken
• zentrale Versionskontrollsysteme haben Kollaboration vereinfacht
• SVN hat seine Kinderkrankheiten hinter sich
• Git
• de.wikipedia.org/wiki/BitKeeper
• de.wikipedia.org/wiki/Mercurial
• de.wikipedia.org/wiki/Bazaar
• GNU arch …