Source Code Control System
Author
Albert FloresSource Code Control System (SCCS) je verzovací systém - nástroj, který uchovává historii změn ve zdrojových kódech a jiných textových souborech během vývoje softwarového projektu. Umožňuje uživateli načíst libovolnou starší verzi souboru a změny, které byly provedeny. SCCS vyvinul na konci roku 1972 Marc Rochkind v Bellových laboratořích pro počítače IBM System/370 s operačním systémem OS/360.
Charakteristickým rysem SCCS je řetězec sccsid, který se vloží do každého ze zdrojových souborů a který SCCS automaticky aktualizuje při každé změně. Začlenění sccsid do textu programu v jazyce C vypadá takto:
static char sccsid[] = "@(#)ls.c 8.1 (Berkeley) 6/11/93";
Tento textový řetězec obsahuje jméno souboru a datum, a může také obsahovat komentář. Po překladu lze řetězec nalézt v cílových a spustitelných souborech vyhledáním vzorku @(#) a může se použít pro zjištění, jaké zdrojové soubory byly použity při překladu. +more Pro automatizaci tohoto vyhledání je k dispozici příkaz what.
Historie
SCCS vyvinul v roce 1972 Marc Rochkind v jazyce SNOBOL4 v Bellových laboratořích pro počítače IBM System/370 s operačním systémem OS/360 MVT. V roce 1973 přepsal SCCS do programovacího jazyka C pro použití v operačním systému Unix na počítači PDP-11.
První veřejně vydaná verze SCCS byla verze 4 z 18. února 1977. +more Byla součástí vydání Programmer's Workbench (PWB) operačního systému Unix. Verze 4 byla první verze, které používala textový formát souboru historie, dřívější verze používaly binární formát souboru historie. Autorem verze 4 již nebyl Marc Rochkind. SCCS byl následně zahrnut do AT&T komerčních distribucí UNIX System III a UNIX System V. Pro UNIX/32V, předchůdce BSD, nebyl licencovaný. Sada SCCS příkazů je nyní součástí Single UNIX Specification.
Před rozšířením RCS a CVS byl SCCS dominantním verzovacím systémem pro Unix a byl široce používán. Všechny uvedené verzovací systémy jsou dnes obecně považovány za zastaralé, zvláště v komunitě vývojářů svobodného softwaru s otevřeným zdrojovým kódem, která z větší části přešla na distribuované verzovací systémy. +more Formát SCCS souboru však stále interně používá několik novějších verzovacích systémů, např. BitKeeper nebo TeamWare, který je frontendem k SCCS. Sablime byl vyvinut z upravené verze SCCS, ale používá formát souboru historie, který je nekompatibilní s SCCS. Formát souboru SCCS používá techniku ukládání nazývanou Interleaved deltas nebo SCCS weave. ). Tato technika ukládání je považována mnoha vývojáři verzovacích systémů za základ pro pokročilé techniky slučování a verzování, jakými je např. „Precise Codeville“ (pcdv) sloučení.
Kromě opravy problému roku 2000 v roce 1999 nebyl systém SCCS aktivně vyvíjen. V roce 2006 společnost Sun Microsystems (dnes část společnosti Oracle) uvolnila svoji verzi SCCS pro operační systém Solaris jako Svobodný software pod licencí Common Development and Distribution License (CDDL) v rámci svého úsilí na otevření zdrojového kódu systému Solaris.
Pozadí
Source Code Control System je systém pro verzování souborů a udržování historie změn. Při vývoji softwaru se obvykle přidávají nové funkce, opravují chyby a optimalizují algoritmy. +more Úpravy zdrojových textů způsobují problémy, které lze řešit systémem verzování zdrojových textů: * Zdrojový kód zabírá příliš mnoho prostoru, protože se v mnoha verzích opakuje. * Je těžké získat informace o tom, kdy a kde byly provedeny změny. * Je obtížné najít přesnou verzi, kterou má zákazník a ve které je chyba. SCCS byl vytvořen pro řešení těchto problémů. SCCS z AT&T měl pět velkých verzí pro IBM OS a pět velkých verzí pro UNIX Dvěma specifickými implementacemi SCCS jsou: PDP 11 s Unixem a IBM 370 s OS/370.
Skládání
SCCS se skládá ze dvou částí: SCCS příkazů a SCCS souborů. Všechny základní operace (například vytvoření, smazání, úprava) lze provádět pomocí SCCS příkazů. +more SCCS soubory mají jedinečnou předpona jména s. , která je řízena SCCS příkazy.
SCCS soubory
SCCS soubor sestává ze tří složek: * Delta tabulka * Příznaky přístup a sledování * Tělo textu
Tabulka změn
Změna je v SCCS jedna revize SCCS souboru. Změny jsou uloženy v tabulce změn , takže každý SCCS soubor má vlastní záznam změn.
Řídicí a sledovací příznaky v SCCS souborech
Každá operace s každým SCCS souborem je trasována příznaky, které mají následující funkce: * nastavení oprávnění pro úpravy každého SCCS souboru, * řízení každé verze každého SCCS souboru, * umožnění společné editování každého SCCS souboru, * vzájemné odkazování na změny každého SCCS souboru.
Tělo
SCCS používá tři typy řídicích záznamů pro sledování úprav provedených v různých deltách. Jsou to řídicí záznamy pro vložení, smazání a ukončující řídicí záznam. +more Kdykoli uživatel změní nějakou část textu, je kolem změny vložen řídicí záznam. Řídicí záznamy jsou uloženy v těle spolu s původním textem záznamů.
Základní příkazy SCCS
SCCS poskytuje sadu příkazů realizovaných voláním maker, která provádějí nebo zahajují funkce správy zdrojového kódu s jednoduchou syntaxí, např. create, get, edit, prt. +more Poskytuje také přístup k historii revizí verzovaných souborů. Tyto příkazy jsou implementovány jako argumentová slovesa řídicího program sccs.
Create
Sccs příkaz create použije text zdrojového souboru pro vytvoření nového souboru historie. Například:
$ sccs create program.c program.c: 1.1 87 lines
Výstupem je jméno souboru, verze a počet řádků.
Příkaz je makro, které je expandováno na příkaz admin pro vytvoření nové historie souboru následovaný příkazem get pro načtení souboru.
Edit
$ sccs edit program.c 1.1 new delta 1.2 87 lines
Upraví zadaný soubor.
Příkaz je makro, které se expanduje na get -e.
Delget
$ sccs delget program.c comments? main function enhanced 1.2 10 inserted 0 deleted 87 unchanged 1.2 97 lines
Začlení novou verzi do verzovacího systému a načte novou verzi z sccs.
Příkaz je makro, které se expanduje na příkaz delta pro začlenění nové verze souboru následovaný příkazem get pro načtení souboru.
Get
$ sccs get program.c 1.1 87 lines
Výstupem jsou verze a řádky, které se mají načíst z určitého souboru.
Prt
$ sccs prt program.c
Příkaz vypisuje seznam změn ve zdrojovém kódu.
Implementace
Unixové verze SCCS
Většina verzí Unixu obsahuje verzi SCCS, která však často není aktivně vyvíjena.
Větev Jörga Schillinga
Zesnulý Jörg Schilling (který v raných dobách projektu OpenSolaris požadoval vydání SCCS) udržoval větev SCCS, která byla založena na zdrojovém kódu z OpenSolaris. Byla do ní začleněna významná vylepšení, ale pokud se nepoužije režim „new project“, zůstává stále kompatibilní s původní verzí SCCS.
Projekt Heirloom
Projekt Heirloom obsahuje verzi SCCS odvozenou ze zdrojového kódu OpenSolaris a udržovanou od prosince 2006 do dubna 2007.
GNU konverzní program
GNU nabízí SCCS kompatibilní program [url=https://www. gnu. +moreorg/software/cssc/]GNU CSSC[/url] (“Compatibly Stupid Source Control“), který se příležitostně používá pro konvertování SCCS archívů pro novější systémy jako je CVS nebo Subversion; není úplná SCCS implementace a není doporučena pro použití v nových projektech, ale je určena pro konvertování na moderní verze verzovacích systémů.
Jiné verzovací systémy
Od 90. let 20. +more století bylo vyvinuto mnoho nových verzovacích systémů, které se staly oblíbenými, které jsou navrženy pro řízení projektů s velkým počtem souborů, a že poskytují pokročilou funkčnost např. víceuživatelské operace, řízení přístupu, automatické buildy, podporu sítí, správu vydání a distribuované verzování. Systémy BitKeeper a TeamWare používají interně stejný formát souboru jako SCCS a lze je považovat za následníky SCCS.
Na BSD systémech bylo SCCSID nahrazeno RCSID, který začíná a končí znakem $; odpovídajícím nástroj je ident. Tento systém původně používal verzovací systém RCS a přidala automaticky na checkout. +more Výsledné revize zdrojového kódu kontrola/kontrolovat identifikátory jsou dokumentované v NetBSD a FreeBSD styl vede pro jejich vlastní kódové základny. NetBSD definuje zakázkové klíčové slovo $NetBSD: . $ zatímco FreeBSD definuje $FreeBSD: . $ a makro přejmenované na __FBSDID.
Verzovací systém SRC může také interně používat SCCS (nebo RCS) formát souborů a snaží poskytovat lepší uživatelské rozhraní pro SCCS, ale stále řídí pouze projekty s jediným souborem.
Odkazy
Reference
Literatura
[url=http://sccs.sourceforge.net/sccs_invention.html]Essay from Marc Rochkind on how SCCS was invented[/url]
Externí odkazy
[url=https://codeberg.org/schilytools/schilytools]Schily's SCCS on Codeberg[/url]