Jörg Schilling Source Code Control System (SCCS) Geschichte und aktuelle Ziele Fokus Fraunhofer



Ähnliche Dokumente
Jörg Schilling Ursprünge der Versionsverwaltung und Revival vom Source Code Control System (SCCS)

Software Engineering in der Praxis

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Versionsverwaltung mit Mercurial für Einsteiger

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

Einführung in Subversion

CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

Sourcecodeverwaltung

Versionsverwaltung mit SVN

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Proseminar Unix-Tools CVS Daniel Weber & Zhen Zhang Betreuer: Volker Baier

Praktikum Ingenieurinformatik (PI)

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Einführung in Subversion. Tutorium SWP

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Moodle aktuell halten mit Git

Lehrer: Einschreibemethoden

Apache Subversion (SVN)

git Änderungen verwalten mit git

GITS Steckbriefe Tutorial

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Versionierung und Bugtracking mit Git(Hub)

Versionsverwaltung von Softwareartefakten. 21. Oktober 2014

Die Projek*ools. Files, Git, Tickets & Time

Versionskontrollsysteme

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Subversion. 17. Oktober Subversion. Norbert Perk. Warum Versionsverwaltung? Wie funktioniert. Was ist Subversion? Subversion- Server.

Anleitung über den Umgang mit Schildern

Versionsverwaltung mit git. Christoph Knabe FB VI

8. Dokumentenverwaltung mit CVS eine Einführung

Von SVN zu Git. Daniel Willmann cbna

Konfigurationsdateien mit Git verwalten

eprints-anwendertreffen 2013

Revision Control System. Versionskontrolle

Metadateneditoren für ArcGIS

Versionskontrolle mit Subversion

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Informationen zur Verwendung von Visual Studio und cmake

Anbindung des Onyx Editors an das Lernmanagementsystem OLAT Anwendungsdokumentation

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

ERASMUS+ im Schulbereich (COMENIUS) Mobility Tool. Berichterstattung über KA1 Mobilitätsprojekte. Stand: 23. Oktober 2014

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

GEARWHEEL V4.0 - Release Notes ( )

Deployment Deployment Seite 1 / 25

Erfolgreicher Ums9eg auf Git

CodeSaver. Vorwort. Seite 1 von 6

Dokumentation zur Versendung der Statistik Daten

Barcode Master. Barcode Generator für PC Windows und MAC OS. Bedienungsanleitung und Handbuch. Version 1.1. Dr.J.Willrodt /

Um das Versenden von Anhängen an s zu ermöglichen, wurde der Assistent für die Kommunikation leicht überarbeitet und wo nötig verbessert.

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

NODELOCKED LIZENZ generieren (ab ST4)

Arbeiten mit UMLed und Delphi

Einführung in LINUX Der Editor vi

Migration von Subversion nach Mercurial und Einsatz dezentraler Versionskontrolle in Unternehmen

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

Versionskontrolle mit Mercurial. Michael Gebetsroither

Projektzeit erfassen. Allgemeines. Projektzeit erfassen - Maske. Erklärung der Tabellenspalten. In Arbeit!

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Dokumentation zeitgesteuerter -Versand mit Attachments. zum Projekt. Deutsche Gesellschaft für Zahn-, Mund- und Kieferheilkunde

egovernment für das Open Source CMS Contao

Inventarverwaltung mit Access 2007/10

Installation, Einrichtung, Nutzung von PHOCA DOWNLOAD. Download-Links... 2

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

Team- Entwicklung unter Eclipse

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Funktionserweiterungen, behobene Funktionseinschränkungen und Funktionseinschränkungen, EASY Starter V1.5

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Besprechung Übung 1 & Vorstellung Übung 2

Anleitung für Autoren auf sv-bofsheim.de

Das SIARD Format und die zugehörige Tool-Landschaft

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Werkzeuge der Informatik UNIX

Kurzanleitung zu. von Daniel Jettka

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Viele Bilder auf der FA-Homepage

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Der Einsatz von Open-Source-Produkten im Unternehmen, dargestellt am Beispiel von OpenOffice

Datenexport aus JS - Software

Informations- und Kommunikationsinstitut der Landeshauptstadt Saarbrücken. Upload- / Download-Arbeitsbereich

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Batch Bildgrößenkonvertierung mit IrfanView 1

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Arbeitsschritt Ascon X-Cad

Einfu hrung in Subversion mit TortoiseSVN

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Prozesse. Anlegen einer neuen Prozessdefinition

Dieser Text beschreibt die Neuerungen von DaNiS und die Vorgehensweise beim DaNiS-Update.

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Eprog Starthilfe. 5. Oktober Einleitung 2

Dokumentation IBIS Monitor

Benutzer, Gruppen, Zugriffsrechte

Transkript:

Jörg Schilling Source Code Control System (SCCS) Geschichte und aktuelle Ziele Fokus Fraunhofer

Anfänge, SCCS als erste Versionsverwaltung Im Jahre 1972 schreibt Marc Rochkind SCCS in Snobol für eine IBM 370. Das Dateiformat ist binär. Später wurde es von ihm in C neu geschrieben um es auf einer PDP 11 unter UNIX laufen zu lassen Am 18. Februar 1977 wurde SCCSv4 freigegeben, das History Dateien vollständig als Text Dateien verwaltet Danach gab es nur wenige Neuerungen in SCCS: Mai 1980 Eric Allman schreibt sccs(1) 1988 mit SunOS 4.0 binäre Inhalte durch uuencode 1999 SCCS wird Y2k clean

Das SCCS Konzept Versionsverwaltung von Einzeldateien Checksumme zur Sicherung der Integrität Atomare Updates der Einzeldateien Platzsparende Speicherung durch Interleaved deltas (alle Zeilen aus allen Versionen nebeneinander) Kein Extra Aufwand für das Anlegen von Branches Kein Extra Aufwand für das Mischen von Branches Gleichzeitige Nutzung durch mehrere Nutzer Verwaltung von Nutzer Zugriffslisten

Die Programme von SCCSv4 get Holt eine Version aus einem Historyfile delta Baut neue Versionen in ein Historyfile ein admin Legt neue Historyfiles an oder ändert Parameter cdc Ändert einen Deltakommentar (Versionskommentar) comb Beseitigt delta Bereiche (z.b. alles vor 1.9) help Gibt Erklärungen für Fehlermeldungen prs Gibt Metadaten von Historyfiles aus rmdel Beseitigt ein Delta am Ende eines Branches sact Listet Edit Aktivitäten auf

Die Programme von SCCSv4 Fortsetzung sccsdiff Listet Unterschiede zwischen Versionen unget Beseitigt die Effekte von get -e val Validiert SCCS Historyfiles auf Defekte what Sucht SCCS Marker @(#) in Dateien sccs SCCS Frontend mit zusätzlichen Meta Kommandos wie: sccs create Überführen von Files ins SCCS sccs diffs Vergleicht Edit Version gegen ältere sccs edit Checkt editierbare Version aus sccs unedit Beseitigt editierte Dateien

Das SCCS Historyfile Format SCCS Magic auf erster Zeile ^Ahnnnnn Alle Steuerzeilen in SCCS beginnen mit ^A h als Marker für hash nnnnn die untersten 16 Bits der signed Checksumme Eine Folge von SCCS Delta Tabelleneinträgen Statistik Zeile (inserted/deleted/unchanged) Delta Zeile (Version, Datum, Autor, Vorgängerversion) I/X/G Zeilen (include/exclude/ignore) für Branch Merge MR Nummern (Modification Request) Delta Kommentar (beliebig viel Text)

Das SCCS Historyfile Format Fortsetzung Usernamen bzw. GruppenIDs für Zugriffsrechte SCCS Flags SCCS Beschreibungsfile Body mit dem interleaved Delta (Weave)

Das SCCS Historyfile Format Beispiel ^Ah41388 ^As 00001/00001/00013 ^Ad D 1.2 07/01/27 15:05:05 joerg 2 1 ^Ac man neu ^Ae ^As 00014/00000/00000 ^Ad D 1.1 06/12/20 23:46:27 joerg 1 0 ^Ac date and time created 06/12/20 23:46:27 by joerg ^Ae ^Au ^AU ^Af e 0 ^At ^AT ^AI 1...

Interleaved Deltas Beispiel ^AI 1 zeile 1 ^AD 2 zeile a ^AE 2 ^AI 2 zeile 2 ^AE 2 ^AE1

Vorteile des SCCS Historyfile Formats Einfach zu Parsieren Checksumme schützt vor versehentlicher Beschädigung Interleaved Deltas: Schneller Zugriff auf beliebige Versionen Annotierter Text ohne zusätzlichen Aufwand Autor, Zeit, Version für jede Zeile ist in den Datenstrukturen Merge von Branches ohne Überlappung ohne zusätzlichen Aufwand Keine bekannten Probleme seit mehr als 25 Jahren

Weitere Vorteile von SCCS SCCS ist Bestandteil des POSIX Standards make hat bereits Unterstützung für SCCS Die Web GUI opengrok unterstützt SCCS bereits SCCS ist extrem schnell (typisch ca. 5x schneller als andere Systeme)

Grundlagen zur Nutzung von SCCS File editieren mit $EDITOR sccs create filename bringt File unter SCCS Kontrolle sccs edit filename checkt File zum Editieren aus sccs diffs filename zeigt Unterschiede sccs delget filename erzeugt neue Version sccs help für Übersichtshilfe sccs help sccs für Optionen von sccs(1) sccs help sccs_subcmds für Liste von Sub Kommandos sccs help cm3 für Hilfe zum Fehler cm3

Sonstige Entwicklungen 1982: Walter Tichy schreibt RCS, ein SCCS Nachbau Keine Checksummen, daher damals 20% schneller Umgekehrte Deltas, langsam für alte Versionen Dateiformat aufwendiger zu parsieren Insgesamt keine Vorteile zu SCCS 1986 Sun veröffentlicht NSE November 1990 CVS als Nachfolger von RCS 1990 Sun TeamWare als SCCS Frontend 1997 BitKeeper SCCS von Larry McVoy

Projekt-orientierte Systeme 1986 NSE von Sun auf Basis von SCCS 1990 CVS auf Basis von RCS 1990 TeamWare von Sun auf Basis von SCCS 1997 BitKeeper SCCS (Neuentwicklung v. Larry McVoy) 2004 Subversion, gedacht als Nachfolger zu CVS 2005 GIT 2005 Mercurial

Verwandtschaften Alle verteilten OSS Versionsverwaltungen basieren letztlich auf den Ideen von BitKeeper SCCS BitKeeper SCCS basiert auf den Ideen von TeamWare TeamWare basiert auf den Ideen von NSE Damit bauen alle modernen Systeme letztlich auf SCCS auf

Warum ist SCCS nicht dominierend? 1985 waren SCCS und RCS Closed Source SCCS war kostenlos auf allen Systemen RCS kostete sogar Geld Das unterlegene RCS wurde zum richtigen Zeitpunkt OSS Der richtige Zeitpunkt war das Aufkommen von FreeBSD SCCS wurde zu spät OpenSource

Entwicklung von SCCS nach 1977 1986 NSE Erweiterungen von Sun 1988 Unterstützung von Binärfiles ab SunOS 4.0 Nach 1990 Unterstützung für beliebig lange Text Zeilen 2000 2001Diskusionen mit SCO über OSS 2004 2006 Diskussionen mit Sun über OSS 20. Dezember 2006 Sun gibt SCCS unter der CDDL frei 21. Dezember 2006 Schily SCCS kompiliert auf Solaris 7. Januar 2007 Schily SCCS 0.3 läuft auf Solaris, Linux, FreeBSD, Mac OS X, Cygwin

Schily-SCCS seit Dezember 2006 26. Dezember 2006 SCCS 0.1 erste publizierte Version 11.Februar 2007, SCCS 1.0 läuft auf nahezu allen Plattformen 11.Juli 2011, SCCS 5.01 bringt viele Neuigkeiten, wie z.b. Rekursive Bearbeitung in Directory Bäumen Aktuelle Entwicklung geht zu SCCS 6.0 als verteiltes System mit Unterstützung für Changesets in Projekten Projekte statt Einzeldateien Netzwerkunterstützung

Neue Features in SCCS 4,7x weniger CPU Zeit Bedarf seit Dezember 2006 Unterstützung bis zum Jahr 9999 (64 Bit Versionen) 4 stellige Jahreszahlen auch in Keywords Rekursives Arbeiten mit sccs -R command Schnelle Massenübernahme in SCCS, Solaris mit 46000 Files und 500 MB benötigt nur 8 Sekunden Erheblich verbesserte Fehlererkennung durch val(1) Bessere man Pages und besseres sccs help Automatische Regressionstests zur Qualitätssicherung

Neue Features in SCCS ^A am Anfang von Zeilen und Dateien ohne \n am Ende sind nun Textfiles (zur Kompatibilität nur aktiv mit v6) Neues erweiterbares SCCSv6 Historyfile Format Neue versionsspezifische Checksummen (ähnlich BK) sccslog Kommando neu rcs2sccs Kommando neu sccs istext neu sccs editor neu

Ausblicke zum verteilten SCCS Einführung einer Directory.sccs im Project Set Home Einführung einer ChangeSet Datei zur Beschreibung von Projekten sccs init Initialisiert ein neues leeres Projekt (schaltet um in den Projekt Modus) sccs clone Kopiert ein Projekt sccs export Erzeugt ein Changeset diff File sccs import Importiert ein Changeset diff File (wird hg export Files unterstützen)

Ausblicke zum verteilten SCCS sccs pull und sccs push zum Update gegen andere Repositories sccs outgoing und sccs incoming zur Anzeige was dabei transportiert würde sccs add, sccs remove, sccs rename, sccs revert zum Modifizieren von Projekten sccs commit Erzeugt eine neue Projekt Release sccs tag zum Hinzufügen eines Versionstags

Ausblicke zum verteilten SCCS sccs smoosh um zwei unterschiedliche Kopien in eine Version mit Branch zu wandeln Netzwerkunterstützung Merge Tools für nicht triviale Konflikte

Skalierbarkeit OpenSolaris hatte in 5 Jahren 13150 Changesets (ca. 46000 Files) ca. 168000 modifizierte Dateien ca. 12,8 modifizierte Dateien pro Changeset ca. 8,3 Changesets pro Tag Linux hat ähnliche Änderungsfrequenzen wie OpenSolaris (aber nur 11000 Files) Solaris hatte in 25 Jahren ca. 190000 Changesets ca. 465000 modifizierte Dateien ca. 2,4 modifizierte Dateien pro Changeset ca. 21 Changesets pro Tag BSD UNIX hatte in 15 Jahren ca. 48000 Changesets (ca. 13000 Files) ca. 108000 modifizierte Dateien ca. 2,2 modifizierte Dateien pro Changeset ca. 19.8 Changesets pro Tag

Randbedingungen für ein Projekt 50 Jahre ca. 350000 Changesets bei Arbeiten wie an UNIX d.h. 350000 Änderungen an der Changeset Datei ca. 132000 Changesets bei Arbeiten wie an OS/Linux Mindestens 1000 Änderungen an einer normalen Datei

Skalierbarkeit von SCCS Keine Abhängigkeit von der Anzahl der Dateien Zeit für das initiale Einchecken von OpenSolaris GIT: 1:40 300 MB Repository SCCS (erwartet) 0:20 120 MB Repository Zeit für das Bearbeiten eines Commits für OpenSolaris mit SCCS nach 50 Jahren Entwicklung: Geschätzt unter einer Sekunde mit HW von vor 5 Jahren Zur Zeit läuft ein Dauertest mit SCCS, 2 Millionen Deltas Platzbedarf mit SCCS ca. 300 MB (komprimiert 160 MB) Platzbedarf mit GIT geschätzt: ca. 15 TB

Hilfe wird benötigt Diskussionspartner zum Besprechen der Konzepte Definitiv Autoren für eine GUI zu SCCS Aber auch für alle anderen Bereiche: Regressionstests schreiben Testkompilationen und Tests auf diversen Systemen Importskripte für andere Versionsverwaltungen Doku schreiben Bug Reports...

ftp://ftp.berlios.de/pub/sccs/ SCCS Download

SCCS Dokumentation http://sccs.berlios.de http://sccs.berlios.de/man/index.html http://sccs.berlios.de/man/sccs.1.html http://sccs.berlios.de/man/sccsfile.4.html

Weiterführende Literatur http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sccs.html http://basepath.com/aup/talks/sccs Slideshow.pdf http://minnie.tuhs.org/cgi bin/utree.pl?file=pwb1/usr/news/pibs http://download.oracle.com/docs/cd/e19504 01/802 5880/6i9k05dhp/index.html http://www.catb.org/~esr/writings/version control/version control.html http://hub.opensolaris.org/bin/view/project+opengrok/webhome

Dieser Vortrag liegt online unter http://cdrecord.berlios.de/files/sccs.pdf

Danke