Jump to content

Source Code Control System

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
Source Code Control System (SCCS)
Original author(s)Marc J. Rochkind
Developer(s)Bell Labs
Initial release1973; 51 years ago (1973)[discuss]
RepositoryOfficial website
Written inFirst version: SNOBOL4
Rewrite: C
Operating systemOS/360, Unix, Unix-like
PlatformIBM System/370, PDP-11, IA-32
TypeVersion control
Licenseproprietary licenses, Common Development and Distribution License
WebsiteThe Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 Edition

소스 코드 제어 시스템 (Source Code Control System 줄여서 SCCS)은 소프트웨어의 조각의 개발 중에 소스 코드와 기타 텍스트 파일에서 변경 사항을 추적하도록 설계된 버전 제어 시스템입니다. 이것은 사용자에게 원본 소스 코드의 이전 버전의 임의의 것과 저장된 변경 사항을 검색하는 것을 허용합니다. 그것은 원래 OS/360을 실행하는 IBM System/370 컴퓨터에 대해 Marc Rochkind에 의해 1972년 후반에 시작하는 Bell Labs에서 개발되었습니다.[1]

SCCS의 특징적 기능은 소스 코드에 삽입되고, 각 개정판에 대해 SCCS에 의해 자동으로 업데이트되는 sccsid 문자열입니다.[2] 이 예제는 C 프로그래밍 언어에서의 사용을 묘사합니다:

 static char sccsid[] = "@(#)ls.c        8.1 (Berkeley) 6/11/93";

문자열은 파일 이름, 날짜가 포함되고, 역시 주석을 포함할 수 있습니다. 컴파일 후, 문자열은 "@(#)" 패턴을 찾아 바이너리와 객체 파일에서 찾을 수 있고 컴파일 동안 사용된 소스 코드 파일을 결정하기 위해 사용될 수 있습니다. "what" 명령 [1]은 버전 문자열에 대해 이 검색을 자동화하기 위해 사용할 수 있습니다.

History

1972년, Marc RochkindOS/360 MVT를 실행하는 IBM System/370 컴퓨터를 위해 Bell Labs에서 SNOBOL4에서 SCCS를 개발했습니다.[1] 그는 1973년 유닉스 아래에서 사용에 대해 C 프로그래밍 언어로 SCCS를 다시 작성하고, 그런-다음 PDP-11에서 실행했습니다.

최초의 공개 버전은 1977년 2월 18일로부터 SCCS 버전 4였습니다.[3] 그것은 운영 시스템Programmer's Workbench (PWB) 판에서 사용할 수 있었습니다. SCCS의 출시 4는 텍스트-기반 역사 파일 형식을 사용했던 첫 번째 버전이었고, 이전 버전은 바이너리 역사 파일 형식을 사용했습니다. 출시 4는 더 이상 Marc Rochkind에 의해 작성되거나 유지 관리되지 않습니다. 그 후, SCCS는 AT&T의 상용 시스템 IIIㅣ시스템 V 배포판에 포함되었습니다. 그것은 BSD의 조상, 32V로 라이센스가 부여되지 않았습니다.[4] SCCS 명령 집합은 이제 단일 유닉스 사양의 일부입니다.

SCCS는 나중에 버전 제어 시스템, 특히 RCS 및 나중에 CVS가 보다 널리 채택될 때까지 유닉스에 대해 지배적인 버전 제어 시스템이었습니다. 오늘날, 이들 초기 버전 제어 시스템은 일반적으로 특히 분산 버전 제어 시스템을 광범위하게 수용한 오픈-소스 커뮤니티에서 더 이상 사용되지 않는 것으로 여겨집니다. 어쨌든, SCCS 파일 형식은 BitKeeperTeamWare를 포함한 몇 가지 최신 버전 제어 프로그램에서 여전히 내부적으로 사용됩니다. 후자는 SCCS의 프론트엔드입니다. Sablime은 SCCS의 수정된 버전에서 개발되었지만,[5] SCCS와 호환되지 않는 역사 파일 형식을 사용합니다. SCCS 파일 형식은 인터리브 델타 (또는 weave[6])라는 저장 기술을 사용합니다. 이 저장 기술은 지금 많은 버전 제어 시스템 개발자에 의해 "Precise Codeville" ("pcdv") 병합과 같은 고급 병합 및 버전 관리 기술의 기초로 여겨집니다.[7]

1999년에 2000년 문제를 수정한 것 외에는, 다양한 유닉스 공급업체별 SCCS 버전에 대한 적극적인 개발이 이루어지지 않았습니다.[8] 2006년에, Sun Microsystems (오늘날 Oracle의 일부)는 오픈-소스 솔라리스에 대한 그들의 노력의 일부로 CDDL 라이선스 아래에서 오픈-소스로 SCCS의 그들의 Solaris를 출시했습니다.[9]

Background

소스 코드 제어 시스템 (SCCS)은 파일과 역사 변경을 제어하기 위한 시스템입니다. 소프트웨어는 전형적으로 버그 수정, 알고리듬 최적화 및 여분의 함수 추가를 통해 새 버전으로 업그레이드됩니다.[9] 소프트웨어를 변경하는 것은 해결하기 위해 버전 제어를 요구하는 문제의 원인이 됩니다.[1]

  • 소스 코드는 모든 각 버전에서 반복되기 때문에 너무 많은 공간을 차지합니다.
  • 언제 어디서 변경이 발생했는지에 대한 정보를 얻기가 어렵습니다.
  • 클라이언트에 문제가 있는 정확한 버전을 찾는 것은 어렵습니다.

SCCS는 이들 문제를 해결하기 위해 구축되었습니다. AT&T로부터 SCCS는 IBM OS에 대해 5개 주요 버전과 유닉스에 대해 5개 주요 버전을 가집니다.[10] SCCS를 사용하는 두 가지 특정 구현은 유닉스 아래레서 PDP 11과 그 OS 아래에서 IBM 370입니다.[1]

Composition

SCCS는 SCCS 명령과 SCCS 파일의 두 부분으로 구성됩니다.[11] 모든 기본 연산 (예를 들어, 생성, 삭제, 편집)은 SCCS 명령에 의해 실현될 수 있습니다.[11] SCCS 파일은 SCCS 명령에 의해 제어되는 고유한 형식 접두어 s.를 가집니다.[2]

SCCS files

SCCS 파일은 세 부분으로 구성됩니다:[12]

  • 델타 테이블
  • 접근과 추적 플래그
  • 텍스트의 본문

Delta table

SCCS에서, 델타는 SCCS 파일의 단일 개정판입니다. 델타는 델타 테이블에 저장되므로, 각 SCCS 파일은 자체 변경의 기록을 가집니다.[12]

Control and tracking flags in SCCS files

각 SCCS 파일의 모든 각 연산은 플래그에 의해 추적됩니다. 그들 함수는 다음과 같습니다:[12]

  • 모든 각 SCCS 파일의 편집에 대해 권한을 설정합니다.
  • 모든 각 SCCS 파일의 각 출시를 제어합니다.
  • 모든 각 SCCS 파일의 공동 편집을 허용합니다.
  • 모든 각 SCCS 파일의 상호-참조를 변경합니다.

Body

SCCS는 서로 다른 델타에 적용된 삽입과 삭제를 추적을 유지하기 위해 세 가지 유형의 제어 레코드를 사용합니다. 그것들은 삽입 제어 레코드, 삭제 제어 레코드, 및 종료 제어 레코드입니다. 사용자가 텍스트의 일부를 변경할 때마다, 변경 사항 주위에 제어 레코드가 삽입됩니다. 제어 레코드는 원본 텍스트 레코드와 함께 본문에 저장됩니다.[1]

SCCS basic commands

SCCS는 create, get, edit, prt와 같은 간단한 구문으로 소스 코드 관리 기능을 수행하거나 시작하는 매크로 호출 형태의 명령의 집합을 제공합니다.[13][14] 그것은 역시 관리 아래에서 파일의 개정 역사에 대한 접근을 제공합니다. 이들 명령은 드라이버 프로그램 sccs에 대한 인수 동사로 구현됩니다.

Create

sccs 명령 create는 소스 파일의 텍스트를 새로운 역사 파일을 만들기 위해 사용합니다. 예를 들어:

$ sccs create program.c
program.c:
1.1
87 lines

출력은 이름, 버전과 줄입니다.

그 명령은 admin으로 확장되어 새 역사 파일을 만든 다음 get이 파일을 검색하는 매크로입니다.

Edit

$ sccs edit program.c
1.1
new delta 1.2
87 lines

특정 파일을 편집합니다.

그 명령은 get -e로 확장하는 매크로입니다.

Delget

$ sccs delget program.c
comments? main function enhanced
1.2
10 inserted
0 deleted
87 unchanged
1.2
97 lines

새 버전을 확인하고 sccs에서 새 버전을 얻습니다.

그 명령은 delta로 확장되어 새 버전 파일을 확인한 다음 get이 파일을 검색하는 매크로입니다.

Get

$ sccs get program.c
1.1
87 lines

출력은 특정 파일에서 얻고자 하는 버전과 줄입니다.

Prt

$ sccs prt program.c

이 명령은 소스 코드 변경 보고서를 생성합니다.

Implementations

UNIX SCCS versions

대부분의 유닉스 버전은 종종 더 이상 활발하게 개발되지 않는 SCCS 버전을 포함하고 있습니다.[15][better source needed]

Jörg Schilling's fork

Jörg Schilling (OpenSolaris 프로젝트 초기에 SCCS 릴리스를 요청한 사람)은[16] OpenSolaris 소스 코드를 기반으로 하는 SCCS 분기를 유지 관리합니다.[17] 그것은 주요 기능 향상을 받았지만 "새 프로젝트" 모드를 사용하지 않은 한 원래 SCCS 버전과 호환됩니다.[18]

Heirloom Project

Heirloom 프로젝트OpenSolaris 소스 코드에서 파생된 SCCS 버전을 포함하고 있고[19] 2006년 12월과 2007년 4월 사이에 유지 관리되었습니다.[20]

GNU conversion utility

GNU는 SCCS 아카이브를 CVS 또는 Subversion과 같은 최신 시스템으로 변환하기 위해 가끔 사용되는 SCCS 호환 프로그램 GNU CSSC ("Compatibly Stupid Source Control")를 제공합니다;[21] 그것은 완전한 SCCS 구현이 아니고[22] 새 프로젝트에서 사용을 추천하지 하지만, 대부분 최신 버전 제어 시스템으로 변환하기 위한 것입니다.

Other version control systems

1990년대 이후로, 많은 새로운 버전 제어 시스템이 많은 수의 파일을 갖는 프로젝트 관리를 위해 설계되고 다중-사용자 작업, 접근 제어, 자동 빌드, 네트워크 지원, 출시 관리, 및 분산 버전 제어와 같은 고급 기능을 제공하는 것이 개발되어 왔고 대중화되었습니다. BitkeeperTeamWare는 내부적으로 SCCS 파일 형식을 사용하고 SCCS의 후계자로 여길 수 있습니다.[23][24]

BSD 시스템에서, SCCSID는 $로 시작하고 끝나는 RCSID로 대체됩니다; 해당 도구는 ident입니다.[25] 이 시스템은 원래 RCS에 의해 사용되었고 점검에서 자동으로 추가되지만, 이후 FreeBSD 코드 베이스에서 스타일 가이드의 필수적인 부분이 되었으며, 이것은 사용자 정의 키워드 $FreeBSD: ...$__FBSDID로 이름-변경된 매크로를 정의합니다.[26]

SRC 버전 제어 시스템은 역시 내부적으로 SCCS 파일 형식 (또는 RCS의 것)을 사용할 수 있고 여전히 오직 단일-파일 프로젝트를 관리하면서 SCCS에 더 나은 사용자 인터페이스를 제공하는 것을 목표로 합니다.

References

  1. ^ a b c d e Rochkind, Marc J. (December 1975), "The Source Code Control System" (PDF), IEEE Transactions on Software Engineering, vol. SE-1, no. 4, pp. 364–370, doi:10.1109/tse.1975.6312866, S2CID 10006076
  2. ^ a b Oracle. "Chapter 5 SCCS Source Code Control System". Programming Utilities Guide.
  3. ^ http://sccs.sourceforge.net/PWB.html AT&T Announcement for SCCSv4
  4. ^ SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society Archived 2005-08-31 at the Wayback Machine.
  5. ^ 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.
  6. ^ Hudson, Greg (2002-10-03), Notes on keeping version histories of files, Unpublished personal notes
  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): p.398.
  8. ^ What is SCCS, GNU operating System
  9. ^ "Home Organization Selection". ProQuest 215925387. {{cite journal}}: Cite journal requires |journal= (help)
  10. ^ The evolution of a Source Code Control System. Alan L.Glasser, published in sigmetrics, Nov 1978 when SCCS on UNIX was a version 4
  11. ^ a b "SCCS". www-h.eng.cam.ac.uk. Retrieved 2016-09-12.
  12. ^ a b c IBM. "General Programming Concepts: Writing and Debugging Programs". IBM Knowledge Center.
  13. ^ An Introduction to the Source Code Control System Eric Allman, Project Ingres, University of California at Berkeley
  14. ^ Source Code Control System Programming Utilities Guide
  15. ^ 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.
  16. ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com". osdir.com. Retrieved 10 September 2016.
  17. ^ Jörg Schilling's SCCS development website
  18. ^ Schily SCCS web site: "Will the upcoming SCCSv6 stay compatible with POSIX and with historic SCCS implementations?"
  19. ^ Gunnar Ritter (20 June 2010). "The Heirloom Development Tools". Retrieved 4 November 2011.
  20. ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ see CVS history
  21. ^ SCCS2SVN conversion utility Archived 2009-12-22 at the Wayback Machine, which works with both SCCS and CSSC
  22. ^ GNU CSSC list of limitations in its documentation
  23. ^ "revtool". BitKeeper Documentation.
  24. ^ "Introduction to Sun WorkShop TeamWare". docs.oracle.com. Retrieved 10 September 2016.
  25. ^ ident(1) – NetBSD General Commands Manual
  26. ^ style(9) – FreeBSD Kernel Developer's Manual

Further reading