Source Code Control System
Vývojář | Bellovy laboratoře |
---|---|
První vydání | 1973 |
Operační systém | OS/360, Unix, UN*X |
Platforma | IBM System/370, PDP-11, IA-32 |
Vyvíjeno v | První verze:SNOBOL4 Přepsaná verze:C |
Typ softwaru | Verzovací systém |
Licence | proprietární licence, Common Development and Distribution License |
Web | The Open Group Base Specifications Issue 7, IEEE Std 1003 |
Některá data mohou pocházet z datové položky. |
Source 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.[1]
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ě.[2] 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. Pro automatizaci tohoto vyhledání je k dispozici příkaz what
.[3]
Historie
[editovat | editovat zdroj]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.[1] 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.[4] 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ý.[5] 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. 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[6] byl vyvinut z upravené verze SCCS,[7] 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.[8]). 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í,[9] 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.[10] 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.[11]
Pozadí
[editovat | editovat zdroj]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.[12] Úpravy zdrojových textů způsobují problémy, které lze řešit systémem verzování zdrojových textů:[1]
- 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[13] Dvěma specifickými implementacemi SCCS jsou: PDP 11 s Unixem a IBM 370 s OS/370.[1]
Skládání
[editovat | editovat zdroj]SCCS se skládá ze dvou částí: SCCS příkazů a SCCS souborů.[14] Všechny základní operace (například vytvoření, smazání, úprava) lze provádět pomocí SCCS příkazů.[14] SCCS soubory mají jedinečnou předpona jména s.
, která je řízena SCCS příkazy.[2]
SCCS soubory
[editovat | editovat zdroj]SCCS soubor sestává ze tří složek:[15]
- Delta tabulka
- Příznaky přístup a sledování
- Tělo textu
Tabulka změn
[editovat | editovat zdroj]Změna (anglicky delta) je v SCCS jedna revize SCCS souboru. Změny jsou uloženy v tabulce změn (anglicky delta table), takže každý SCCS soubor má vlastní záznam změn.[15]
Řídicí a sledovací příznaky v SCCS souborech
[editovat | editovat zdroj]Každá operace s každým SCCS souborem je trasována příznaky, které mají následující funkce:[15]
- 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
[editovat | editovat zdroj]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. 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ů.[1]
Základní příkazy SCCS
[editovat | editovat zdroj]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
.[16][17] Poskytuje také přístup k historii revizí verzovaných souborů. Tyto příkazy jsou implementovány jako argumentová slovesa řídicího program sccs.
Create
[editovat | editovat zdroj]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
[editovat | editovat zdroj]$ 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
[editovat | editovat zdroj]$ 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
[editovat | editovat zdroj]$ 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
[editovat | editovat zdroj]$ sccs prt program.c
Příkaz vypisuje seznam změn ve zdrojovém kódu.
Implementace
[editovat | editovat zdroj]Unixové verze SCCS
[editovat | editovat zdroj]Většina verzí Unixu obsahuje verzi SCCS, která však často není aktivně vyvíjena.[18]
Větev Jörga Schillinga
[editovat | editovat zdroj]Zesnulý Jörg Schilling (který v raných dobách projektu OpenSolaris požadoval vydání SCCS)[19] udržoval větev SCCS,[20][21] 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.[22]
Projekt Heirloom
[editovat | editovat zdroj]Projekt Heirloom obsahuje verzi SCCS odvozenou ze zdrojového kódu OpenSolaris[23] a udržovanou od prosince 2006 do dubna 2007.[24]
GNU konverzní program
[editovat | editovat zdroj]GNU nabízí SCCS kompatibilní program GNU CSSC (“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; [25] není úplná[26] 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
[editovat | editovat zdroj]Od 90. let 20. 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.[27][28]
Na BSD systémech bylo SCCSID nahrazeno RCSID, který začíná a končí znakem $
; odpovídajícím nástroj je ident
.[29] Tento systém původně používal verzovací systém RCS a přidala automaticky na checkout. Výsledné revize zdrojového kódu kontrola/kontrolovat identifikátory jsou dokumentované v NetBSD[30] a FreeBSD[31] 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.[32]
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku Source Code Control System na anglické Wikipedii.
- ↑ a b c d e ROCHKIND, Marc J. The Source Code Control System. [s.l.]: [s.n.], December 1975. Dostupné v archivu pořízeném dne 2011-05-25. doi:10.1109/tse.1975.6312866. S2CID 10006076. S. 364–370. Archivováno 25. 5. 2011 na Wayback Machine.
- ↑ a b ORACLE. Chapter 5 SCCS Source Code Control System [online]. Programming Utilities Guide. Dostupné online.
- ↑ what [online]. IEEE and The Open Group, n.d. [cit. 2022-11-28]. Dostupné online.
- ↑ http://sccs.sourceforge.net/PWB.html Archivováno 6. 7. 2022 na Wayback Machine. AT&T Announcement for SCCSv4
- ↑ SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society Archivováno 6. 12. 2023 na Wayback Machine..
- ↑ 2016-07-22. Dostupné v archivu pořízeném z Sablime originálu.
- ↑ Estublier, Jacky, David Leblang, André van der Hoek, Reidar Conradi, Geoffrey Clemm, Walter Tichy, and Darcy Wiborg-Weber. “Impact of software engineering research on the practice of software configuration management.” ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (October 2005): 383–430.
- ↑ HUDSON, Greg. Notes on keeping version histories of files. [s.l.]: Unpublished personal notes, 2002-10-03. Dostupné online.
- ↑ Estublier, Jacky, David Leblang, André van der Hoek, Reidar Conradi, Geoffrey Clemm, Walter Tichy, and Darcy Wiborg-Weber. “Impact of software engineering research on the practice of software configuration management.” ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (October 2005): p.398.
- ↑ What is SCCS, GNU operating System
- ↑ Stephen Lau, Sun Microsystems. SCCS/make source available [online]. 2006-12-19 [cit. 2011-11-14]. Dostupné v archivu pořízeném dne 2012-04-25.
- ↑ Home Organization Selection COX, John. Utility zaps software update problems. Network World. 1995-04-10, roč. 12, čís. 15. Dostupné online [cit. 2024-02-29].
- ↑ The evolution of a Source Code Control System. Alan L.Glasser, published in sigmetrics, Nov 1978 when SCCS on UNIX was a version 4
- ↑ a b SCCS [online]. www-h.eng.cam.ac.uk [cit. 2016-09-12]. Dostupné v archivu pořízeném dne 2016-08-08.
- ↑ a b c IBM. General Programming Concepts: Writing and Debugging Programs [online]. IBM Knowledge Center, 2018-06-07. Dostupné online.
- ↑ An Introduction to the Source Code Control System Archivováno 6. 11. 2014 na Wayback Machine. Eric Allman, Project Ingres, University of California at Berkeley
- ↑ Source Code Control System Programming Utilities Guide
- ↑ Koike, Hideki, and Hui-Chu Chu. "VRCS: Integrating version control and module management using interactive three-dimensional graphics." Visual Languages, 1997. Proceedings. 1997 IEEE Symposium on. IEEE, 1997.
- ↑ os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com [online]. osdir.com [cit. 2016-09-10]. Dostupné online.
- ↑ Jörg Schilling's SCCS development website
- ↑ A collection of tools written or formerly managed by Jörg Schilling. [online]. Codeberg, 2022-10-22 [cit. 2022-11-28]. Vývoje se ujala skupina dobrovolníků, kteří chtěli udržet projekt aktivní a v dobré kondici. Dostupné online.
- ↑ Schily SCCS web site: "Will the upcoming SCCSv6 stay compatible with POSIX and with historic SCCS implementations?"
- ↑ Gunnar Ritter. The Heirloom Development Tools [online]. 2010-06-20 [cit. 2011-11-04]. Dostupné online.
- ↑ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ see CVS history
- ↑ SCCS2SVN conversion utility Archivováno 22. 12. 2009 na Wayback Machine., která funguje pro SCCS and CSSC
- ↑ GNU CSSC list of limitations in its documentation
- ↑ revtool [online]. Dostupné online.
- ↑ Introduction to Sun WorkShop TeamWare [online]. docs.oracle.com [cit. 2016-09-10]. Dostupné online.
- ↑ manuálová stránka NetBSD (obecné příkazy) –
- ↑ src/share/misc/style revision 1.64 [online]. NetBSD CVS repository. Dostupné online.
- ↑ manuálová stránka FreeBSD (pro vývojáře jádra) –
- ↑ Resource page for src 1.29 [online]. 2022-01-21 [cit. 2022-11-28]. Dostupné online.