Source Code Control System
Vývojář | Bellovy laboratoře |
---|---|
První vydání | 1973; před 18874 dny |
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
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í
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í
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
SCCS soubor sestává ze tří složek:[15]
- Delta tabulka
- Příznaky přístup a sledování
- Tělo textu
Tabulka změn
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
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
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
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
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.[18]
Větev Jörga Schillinga
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
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
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
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
Reference
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é online.
- ↑ 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.
- ↑
ident(1)
– manuálová stránka NetBSD (obecné příkazy) - ↑ src/share/misc/style revision 1.64 [online]. NetBSD CVS repository. Dostupné online.
- ↑
style(9)
– 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.
Literatura
- Essay from Marc Rochkind on how SCCS was invented Archivováno 16. 5. 2018 na Wayback Machine.
Externí odkazy
- Schily's SCCS on Codeberg
Software pro správu verzí | ||||||||
---|---|---|---|---|---|---|---|---|
Rok (pokud je dostupný) udává uvedení první stabilní verze. Systémy, jejichž jména jsou kurzívou, již nejsou udržované nebo bylo oznámeno ukončení vývoje. | ||||||||
Lokální |
| ![]() | ||||||
Client–server |
| |||||||
Distribuovaný |
| |||||||
Serverový software | ||||||||
Koncepty | ||||||||
*Kategorie |