Source Code Control System

Z Wikipedie, otevřené encyklopedie
Source Code Control System (SCCS)
VývojářBellovy laboratoře
První vydání1973; před 18747 dny
Operační systémOS/360, Unix, UN*X
PlatformaIBM System/370, PDP-11, IA-32
Vyvíjeno vPrvní verze:SNOBOL4
Přepsaná verze:C
Typ softwaruVerzovací systém
Licenceproprietární licence, Common Development and Distribution License
WebThe Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 Edition
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.

  1. 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.
  2. a b ORACLE. Chapter 5 SCCS Source Code Control System [online]. Programming Utilities Guide. Dostupné online. 
  3. what [online]. IEEE and The Open Group, n.d. [cit. 2022-11-28]. Dostupné online. 
  4. http://sccs.sourceforge.net/PWB.html Archivováno 6. 7. 2022 na Wayback Machine. AT&T Announcement for SCCSv4
  5. SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society Archivováno 6. 12. 2023 na Wayback Machine..
  6. 2016-07-22. Dostupné v archivu pořízeném z Sablime originálu. 
  7. 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.
  8. HUDSON, Greg. Notes on keeping version histories of files. [s.l.]: Unpublished personal notes, 2002-10-03. Dostupné online. 
  9. 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.
  10. What is SCCS, GNU operating System
  11. 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. 
  12. 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]. 
  13. The evolution of a Source Code Control System. Alan L.Glasser, published in sigmetrics, Nov 1978 when SCCS on UNIX was a version 4
  14. a b SCCS [online]. www-h.eng.cam.ac.uk [cit. 2016-09-12]. Dostupné online. 
  15. a b c IBM. General Programming Concepts: Writing and Debugging Programs [online]. IBM Knowledge Center, 2018-06-07. Dostupné online. 
  16. 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
  17. Source Code Control System Programming Utilities Guide
  18. 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.
  19. os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com [online]. osdir.com [cit. 2016-09-10]. Dostupné online. 
  20. Jörg Schilling's SCCS development website
  21. 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. 
  22. Schily SCCS web site: "Will the upcoming SCCSv6 stay compatible with POSIX and with historic SCCS implementations?"
  23. Gunnar Ritter. The Heirloom Development Tools [online]. 2010-06-20 [cit. 2011-11-04]. Dostupné online. 
  24. http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ see CVS history
  25. SCCS2SVN conversion utility Archivováno 22. 12. 2009 na Wayback Machine., která funguje pro SCCS and CSSC
  26. GNU CSSC list of limitations in its documentation
  27. revtool [online]. Dostupné online. 
  28. Introduction to Sun WorkShop TeamWare [online]. docs.oracle.com [cit. 2016-09-10]. Dostupné online. 
  29. ident(1) – manuálová stránka NetBSD (obecné příkazy)
  30. src/share/misc/style revision 1.64 [online]. NetBSD CVS repository. Dostupné online. 
  31. style(9) – manuálová stránka FreeBSD (pro vývojáře jádra)
  32. Resource page for src 1.29 [online]. 2022-01-21 [cit. 2022-11-28]. Dostupné online. 

Literatura[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]