Přeskočit na obsah

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 19637 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]

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]

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.

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.

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.

$ 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.

$ 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.

$ sccs get program.c
1.1
87 lines

Výstupem jsou verze a řádky, které se mají načíst z určitého souboru.

$ 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]

V tomto článku byl použit překlad textu z článku Source Code Control System na anglické Wikipedii.

  1. 1 2 3 4 5 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. 1 2 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. 1 2 SCCS [online]. www-h.eng.cam.ac.uk [cit. 2016-09-12]. Dostupné v archivu pořízeném dne 2016-08-08.
  15. 1 2 3 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]