Nach Jahren der Stagnation eröffnen verteilte Systeme neue Perspektiven der Kollaboration
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
Twitter
Tim Pritlove
Twitter
@[email protected]
Website
Spenden via PayPal
Max Merz
(Shownotes)
Pinboard
Twitter
Shownotes
IntroCRE IntroBegrüßungVersion ControlDistributed Version ControlhuklGeschichteSoftwareentwicklungSystemadministrationKonfigurationsdateienVersionsnummerVersionskontrollsystemCVS“Kupferstandard” (Tim)Klondike“Als man mit seinen 2 mal 80MB-Festplatten noch der Held der Straße war.” (Tim)UnixSCCSRCSVMSVirtual Address eXtension (VAX)DateisystemSysadmins nutzen immer noch RCSrc.confFirewallFreeBSDPunktverzeichnisseOpenBSDOpen BSDOpenCVSÜber huklApple Macintosh Performa 6200CDFreeHandDirectorCCCModem1&1TreiberAT-BefehleSubversion (SVN)BranchMergeRCS, CVS, SVNCVS war der heiße Scheiß nach RCSRCS hat nur in einem Verzeichnis versioniertCVS geht von mehreren Mitarbeitern ausMehrbenutzersystemTerminalRepositorySSHTunnelCVS ist nicht Internet-aware, kann man aber trotzdem über Internet machenRCS war Single-UserKonfliktLockingMergingCygnus SolutionsCygnus SolutionsTCP/IPDie allwissende MüllhaldeGCCdas 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 BinariesCVS war 10 Jahre lang alleine auf dem MarktCommits in CVS waren non-atomicCommitSubversion hat das Prinzip von CVS vollendetTime MachineRollbackSVN ist Internet-awareWas macht ein Versionierungssystem?Ursprung der VersionierungdiffpatchFix“Ich bin heut voll dabei irgendwie. Ich muss heut einfach mal die Klondike abdecken, aber gleich steig ich aus.” (Tim)BranchesCVS mit Client-Server-StrukturCVS hat zentrales RepositoryArbeitsablauf bei CVSCommitArbeitskopie (“working copy”)Vorteil von CVSKonflikte und Konfliktmanagementein Beispiel zu Konflikten mit Alice und Bob und Larry und SallyAlice und BobBranches“Man muss sich halt einfach Softwareentwicklung vorstellen wie ein Bäumchen und das Bäumchen soll irgendwie wachsen.” (Tim)BaumTrunkRefactoringMergeKategorie 1/3: Versionskontrollsystem hat keine Probleme beim MergenSVN schafft ab und zu einen Merge auch mal alleineLibraryKategorie 2/3: Konflikte aufgrund der Architektur des Versionskontrollsystemsmoderne Versionskontrollsysteme tracken den Inhalt der Dateien anstatt der Dateien selbstProbleme von SVNAnekdote: einen Tag lang Merge-Konflikte behebenWarum ist Mergen so schmerzhaft?HardlinkLinus Torvaldsgit“Branchen – who cares? Das Schwierige ist das Mergen.” (hukl)SVN kann nicht so wirklich gut mergenMerge TrackingAnekdote von TimSVN hatte Probleme mit der DatenstrukturBerkeley DBFiles tracken vs. Content trackenzentrale Versionskontrollsysteme haben Kollaboration vereinfachtSVN hat seine Kinderkrankheiten hinter sichGitGitBitKeeperSVKMercurialBazaarGNU archMonotoneLarry McVoyLinux KernelWas kann git denn besser?Ruby on Rails"Es gibt nichts was SVN besser macht als ein dezentrales Repository." (hukl)Distributed Version ControlSingle Point of FailureGoogle CodeMercurial Support bei Google Code“In dem Moment, wo die Google-Server abbrennen, ist deine ganze History weg” (hukl) “But Google never fails!” (Tim)GeschwindigkeitQuantensprungBei SVN ist für jede Operation eine Verbindung zum zentralen Repository notwendigTransaktionInitialer Checkout von Git dauert länger als SVNGit spart Platz und ist nach dem initialen Checkout erheblich schneller“Wenn du das einmal erfahren hast, dass alles einfach fast instantan geht, dann willst du da nicht mehr zurück.” (hukl)Interne Datenstruktur von GitEin einziger .git-Ordner im Top-Level-VerzeichnisVier Git ObjectsGit Blob (Binary Large OBject)gzipbzipDateiname des Blobs ist Hash über Inhalt der DateiSHA1-HashGit Tree ObjectGit Commit ObjectJeder Commit referenziert ein Top-Level Tree ObjectZFSGit Tag ObjectTags referenzieren CommitsDurch SHA1 hat man auch gleich PrüfsummenBranching: Jeder Commit hat einen Parent CommitAus Merge resultierender Commit hat zwei ParentsGit und Mercurial können deshalb besser mergenHashfunktionTim fasst zusammenAuch bei Git gibt es Konflikte, aber weniger unnötigeAuswirkungen der DatenstrukturSpeicherplatzbedarfCommit-RechteFork“Wenn man ein Projekt da betreut hat und irgendjemand hat gesagt: ‘Ich mache einen Fork!’” (hukl) “Das war eine Kampfansage.” (Tim)“Bei dezentralen Systemen ist forken cool.” (hukl)IRCGitHubPull RequestTim kann es kaum fassenGit ClonePatchForken und Mergen sind erwünscht und einfach“Distributierte Versionskontrollsysteme könnte man in der Softwarewelt schon fast für den Friedensnobelpreis vorschlagen.” (Tim)Bei dezentralen Systemen ist jedes Repository ist technisch gleichberechtigtAbandonware“Eigentlich ist das so ein bisschen Open Source++.” (Tim)Keine Netzwerkverbindung notwendigIdentifikation von CommitsUnterschiede zwischen RepositoriesLokale und Remote Branches“Also Mercurial und Git sind sehr sehr sehr sehr ähnlich. Das, was ich über Git sage, ist zu 98,5% auch wahr für Mercurial.” (hukl)Git PullUnterschiede bei Branches zwischen Git und MercurialUnterschiede beim Interface zwischen Git und MercurialMarktanteil Git vs. MercurialDateinamen ändernBazaarUnterschiede zwischen Git, Mercurial, Bazaar?Die enormen Vorteile gegenüber SVN sind bei allen dreien gegebenBazaar haben am Anfang Features gefehltGit und Mercurial sind dann zur gleichen Zeit aus der gleichen Motivation heraus entstandenBazaar hat danach aufgeholtEigentlich sind sich jetzt alle sehr ähnlichBitbucketLaunchpadWas leisten diese Seiten?Zugriffsrechte verwaltenSoziale KomponenteWikipediaWikipedia Dump“Ein Rausch, der da ausgebrochen ist mit diesem Forken und Mergen und Pushen und Pullen und Messages Senden und Watchen und…” (hukl)Hukl meint, es hilft der Software-QualitätDer Maintainer kann das Auflösen der Merge-Konflikte an den Contributor delegierenAndere AnwendungsfällePro GitOmniGraffleMarkdownPro Git RepositoryCMSGitFSSynchronisation und DeploymentWeitere FeaturesGit’s Pluggable Merge StrategiesGit’s Octopus Branch StrategyBinary DiffsJPEGMP3ID3-TagHistory RewritingCommits zusammenfassenCommits umordnenCommits löschenWie funktioniert der Umzug?“Jetzt bin ich irgendwie total überzeugt, distributet ist da shit.” (Tim)Fall: Arbeitgeber benutzt SVN und will nicht wechselnGit/Mercurial können mit SVN redenSVKMercurial kann mit Git redenFall: Einzelner Nutzer will nicht wechselnGit DaemonSVN ImportDie eigentliche Hürde ist das UmdenkenMatrixVerteilte Versionskontrolle macht viel mehr SpaßInDesigngit-initGit GUIgitkIDEEclipseMit Git kann man Vieles noch rettenBlick in die ZukunftGit User Survey 2009hukl fällt nichts einFile PermissionsVersionskontrolle auf alles anwendenSubEthaEditGoogle DocsUndoPhotoshopTime MachineGit DokumentationPro GitApressPro Djangogit-scmGit Community BookLinus Torvalds bei GoogleBuch von O’ReillyMercurial HomepageGithub Documentationgitready.comWhy Git is Better Than XGit CommunityGit Version 1.6.3.4Git Version 1.6.4OpenBSDFreeBSDNetBSD“Da muss man sich echt nicht schämen wenn man Mercurial oder Bazaar jetzt benutzt.” (hukl) “Schämen muss man sich nur, wenn man noch CVS benutzt.” (Tim)Abschluss@hukl@timpritloveDistributed Version ControlAufruf zum KommentierenCRE Outro