맨위로가기

소스 코드 제어 시스템

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

소스 코드 제어 시스템(SCCS)은 1972년 마크 로크킨드에 의해 개발된 최초의 버전 관리 시스템 중 하나이다. SCCS는 텍스트 기반 기록 파일 형식을 사용하며, Unix 운영 체제에서 널리 사용되었다. 이후 RCS, CVS와 같은 시스템이 등장하면서 쇠퇴했지만, SCCS 파일 형식은 Bitkeeper, TeamWare와 같은 일부 최신 버전 관리 프로그램에서 내부적으로 사용되기도 한다. SCCS는 델타 테이블, 접근 및 추적 플래그, 텍스트 본문으로 구성되며, 파일 변경 사항을 추적하기 위해 삽입, 삭제, 종료 제어 레코드를 사용한다. GNU CSSC와 같은 SCCS 호환 프로그램도 존재하며, 오픈 소스 소프트웨어 프로젝트에서 사용되기도 한다.

더 읽어볼만한 페이지

  • 1972년 소프트웨어 - RSX-11
    RSX-11은 DEC의 PDP-11 컴퓨터를 위한 실시간 운영 체제로, 다양한 버전으로 출시되어 실시간 처리와 시분할 시스템으로 사용되었으며, RSX-11M은 VMS와 Windows NT 개발에 영향을 주었고 소련 및 동구권에서 복제되기도 했다.
  • 유닉스 보관 및 압축 관련 유틸리티 - Gzip
    gzip은 DEFLATE 알고리즘을 기반으로 데이터를 압축하는 파일 형식으로, 매직 넘버, 헤더, 압축된 페이로드 등을 포함하며, 단일 파일 압축에 주로 사용되고 HTTP 압축 및 다양한 응용 분야에서 활용된다.
  • 유닉스 보관 및 압축 관련 유틸리티 - Bzip2
    Bzip2는 줄리안 세워드가 개발한 자유 소프트웨어로, 버로우즈-휠러 변환, MTF 변환, 허프만 부호화 등의 압축 기법을 사용하여 gzip이나 ZIP보다 높은 압축률을 제공하지만 압축 속도가 느린 블록 정렬 압축 알고리즘이다.
  • 자유 버전 관리 소프트웨어 - 깃 (소프트웨어)
    깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다.
  • 자유 버전 관리 소프트웨어 - 비트키퍼
    비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다.
소스 코드 제어 시스템 - [IT 관련 정보]에 관한 문서
개요
이름소스 코드 제어 시스템 (Source Code Control System, SCCS)
개발자벨 연구소
저자마크 J. 로킨드
최초 버전 출시일1973년
프로그래밍 언어최초 버전: SNOBOL4
재작성: C
운영 체제OS/360, 유닉스, 유닉스 계열
플랫폼IBM 시스템/370, PDP-11, IA-32
장르버전 관리
라이선스사유 라이선스, 공동 개발 및 배포 허가서
웹사이트The Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 Edition
참고 문헌

2. 역사

1972년, 마크 로크킨드가 벨 연구소에서 소스 코드 제어 시스템(SCCS)을 개발하면서 그 역사가 시작되었다.[1] 초기에는 IBM System/370 컴퓨터에서 OS/360 MVT 환경에서 작동하도록 SNOBOL4로 작성되었으나, 1973년 UNIX 환경을 위해 C 프로그래밍 언어로 다시 작성되었다. 당시에는 PDP-11에서 실행되었다.

1977년 2월 18일, 최초 공개 버전인 SCCS 버전 4가 프로그래머 워크벤치(PWB) 운영 체제 에디션과 함께 제공되었다.[4] 이 버전은 텍스트 기반 기록 파일 형식을 사용한 최초의 버전이었다. 이후 SCCS는 AT&T의 상업용 System III 및 System V 배포판에 포함되었지만, BSD의 조상인 32V와는 라이선스되지 않았다.[5] SCCS 명령 집합은 현재 단일 UNIX 규격의 일부이다.

SCCS는 RCSCVS와 같은 후속 버전 관리 시스템이 널리 채택되기 전까지 Unix의 지배적인 버전 관리 시스템이었다. 오늘날 이러한 초기 버전 관리 시스템은 구식으로 간주되지만, SCCS 파일 형식은 비트키퍼와 TeamWare 등 일부 최신 버전 관리 프로그램에서 여전히 사용되고 있다. 1999년 2000년 문제 해결 외에는 활발한 개발이 이루어지지 않다가, 2006년 썬 마이크로시스템즈(현재 오라클의 일부)가 Solaris 버전의 SCCS를 CDDL 라이선스 하에 오픈 소스 소프트웨어로 공개했다.[11]

2. 1. 초기 개발 (1972-1977)

1972년, 마크 로크킨드는 IBM System/370 컴퓨터에서 OS/360 MVT를 실행하기 위해 SNOBOL4벨 연구소에서 SCCS를 개발했다.[1] 1973년에는 UNIX에서 사용하기 위해 C 프로그래밍 언어로 SCCS를 다시 작성했는데, 당시에는 PDP-11에서 실행되었다.

최초로 공개된 버전은 1977년 2월 18일에 출시된 SCCS 버전 4였다.[4] 이 버전은 프로그래머 워크벤치(PWB) 운영 체제 에디션과 함께 제공되었다. SCCS 릴리스 4는 텍스트 기반 기록 파일 형식을 사용한 최초의 버전이었으며, 이전 버전들은 바이너리 기록 파일 형식을 사용했다.

2. 2. 발전과 쇠퇴 (1977-현재)

1977년 2월 18일에 출시된 SCCS 버전 4는 프로그래머 워크벤치 (PWB) 운영 체제 에디션과 함께 제공되었다.[4] 이 버전은 텍스트 기반의 기록 파일 형식을 사용한 최초의 버전이었으며, 이전 버전들은 바이너리 기록 파일 형식을 사용했다. 릴리스 4부터는 마크 로크킨드가 작성하거나 유지 관리하지 않았다. 그 후, SCCS는 AT&T의 상업용 System III 및 System V 배포판에 포함되었으나, BSD의 조상인 32V와는 라이선스되지 않았다.[5] SCCS 명령 집합은 현재 단일 UNIX 규격의 일부이다.

SCCS는 이후 RCSCVS와 같은 후속 버전 관리 시스템이 널리 채택되기 전까지 Unix의 지배적인 버전 관리 시스템이었다. 오늘날 이러한 초기 버전 관리 시스템은 일반적으로 구식으로 간주되며, 특히 오픈 소스 소프트웨어 커뮤니티에서 분산 버전 관리 시스템을 널리 수용하고 있다. 그러나 SCCS 파일 형식은 비트키퍼와 TeamWare 등 일부 최신 버전 관리 프로그램에서 내부적으로 여전히 사용되고 있다. TeamWare는 SCCS의 프론트엔드이다. Sablime[6]은 수정된 SCCS 버전[7]에서 개발되었지만, SCCS와 호환되지 않는 기록 파일 형식을 사용한다. SCCS 파일 형식은 인터리브 델타(또는 weave[8])라는 저장 기술을 사용한다. 이 저장 기술은 현재 많은 버전 관리 시스템 개발자들에게 "Precise Codeville"("pcdv") 병합과 같은 고급 병합 및 버전 관리 기술의 기초로 간주된다.[9]

1999년 2000년 문제를 해결한 것을 제외하고는 다양한 UNIX 벤더별 SCCS 버전에서 활발한 개발이 이루어지지 않았다.[10] 2006년 썬 마이크로시스템즈(현재 오라클의 일부)는 Solaris 버전의 SCCS를 CDDL 라이선스 하에 오픈 소스 소프트웨어로 공개하여, Solaris를 오픈 소스화하려는 노력의 일환으로 제공했다.[11]

3. 구성

SCCS는 SCCS 명령어와 SCCS 파일, 두 부분으로 구성된다.[14] 모든 기본적인 작업(예: 생성, 삭제, 편집)은 SCCS 명령어를 통해 수행될 수 있다.[14] SCCS 파일은 `s.`라는 고유한 형식의 접두어를 가지며, 이는 SCCS 명령어로 제어된다.[2]

SCCS 파일은 다음 세 부분으로 구성된다.[15]


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

4. SCCS 파일

SCCS 파일은 다음 세 부분으로 구성된다.[15]


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

5. SCCS 기초 명령어

SCCS는 소스 코드 관리 기능을 수행하거나 시작하는 매크로 호출 형식의 명령 집합을 제공하며, 관리 대상 파일의 개정 내역에 대한 접근을 제공한다.[16][17] 이러한 명령은 드라이버 프로그램 ''sccs''에 대한 인수 동사로 구현된다.

SCCS는 SCCS 명령어와 SCCS 파일, 두 부분으로 구성된다.[14] 모든 기본적인 작업(생성, 삭제, 편집 등)은 SCCS 명령어를 통해 수행될 수 있다.[14] SCCS 파일은 `s.`라는 고유한 형식의 접두어를 가지며, 이는 SCCS 명령어로 제어된다.[2]

SCCS 파일은 델타 테이블, 접근 및 추적 플래그, 텍스트 본문, 이렇게 세 부분으로 구성된다.[15]

5. 1. create

`sccs create` 명령어는 소스 파일의 텍스트를 사용하여 새로운 이력 파일을 생성한다.[1] 예를 들어 다음과 같이 사용할 수 있다.



$ sccs create program.c

program.c:

1.1

87 lines



출력은 파일 이름, 버전 및 줄 수이다.[1]

이 명령어는 새로운 이력 파일을 생성하기 위해 `admin`으로 확장된 다음 파일을 검색하기 위해 `get`으로 확장되는 매크로이다.[1]

5. 2. edit

파일을 편집하기 위해 준비하는 명령어이다. 사용 예시는 다음과 같다.



$ sccs edit program.c

1.1

new delta 1.2

87 lines



이 명령어는 `get -e` 명령으로 확장되는 매크로이다.

5. 3. delget

SCCS에 변경 사항을 반영(체크인)하고 새 버전을 가져온다. ''delget'' 명령어는 새 버전 파일을 체크인하는 ''delta''와 파일을 검색하는 ''get''으로 확장되는 매크로이다.

예시:

```console

$ sccs delget program.c

comments? main function enhanced

1.2

10 inserted

0 deleted

87 unchanged

1.2

97 lines

5. 4. get

get영어 명령어는 특정 버전의 파일을 가져온다.[1] 예시는 다음과 같다.[1]



$ sccs get program.c

1.1

87 lines



출력 결과는 특정 파일에서 가져오려는 버전과 행 수이다.[1]

5. 5. prt

이 명령어는 소스 코드 변경 보고서를 생성한다.[1]

6. 구현체

유닉스 시스템에는 SCCS 버전이 포함되어 있었지만, 현재는 대부분 활발하게 개발되지 않는다.[36] 1972년, 마크 로크킨드는 IBM System/370 컴퓨터에서 OS/360 MVT를 실행하기 위해 SNOBOL4벨 연구소에서 SCCS를 개발했고,[1] 1973년 UNIX에서 사용하기 위해 C 프로그래밍 언어로 다시 작성했는데, 당시에는 PDP-11에서 실행되었다.

SCCS는 RCS, CVS 등 후속 버전 관리 시스템이 널리 채택되기 전까지 Unix의 지배적인 버전 관리 시스템이었다. 오늘날 이러한 초기 버전 관리 시스템은 일반적으로 구식으로 간주되며, 특히 오픈 소스 소프트웨어 커뮤니티에서 분산 버전 관리 시스템을 널리 수용하고 있다. 그러나 SCCS 파일 형식은 비트키퍼, TeamWare 등 몇몇 최신 버전 관리 프로그램에서 내부적으로 여전히 사용된다. Sablime[6]은 수정된 SCCS 버전[7]에서 개발되었지만 SCCS와 호환되지 않는 기록 파일 형식을 사용한다. SCCS 파일 형식은 인터리브 델타(weave[8])라는 저장 기술을 사용하는데, 이는 현재 많은 버전 관리 시스템 개발자들에게 "Precise Codeville"("pcdv") 병합과 같은 고급 병합 및 버전 관리 기술의 기초로 간주된다.[9]

1999년 2000년 문제 해결을 제외하고, 다양한 UNIX 벤더별 SCCS 버전에서는 활발한 개발이 이루어지지 않았다.[10] 2006년, 썬 마이크로시스템즈(오늘날 오라클의 일부)는 Solaris 버전의 SCCS를 CDDL 라이선스 하에 오픈 소스 소프트웨어로 공개했다.[11]

6. 1. 유닉스 SCCS 버전

유닉스에는 SCCS 버전이 포함되어 있으나 더 이상 활발히 개발되고 있지는 않다.[36] 최초로 공개된 버전은 1977년 2월 18일에 출시된 SCCS 버전 4였다.[4] 이는 프로그래머 워크벤치 (PWB) 운영 체제 에디션과 함께 제공되었다. 그 후, SCCS는 AT&T의 상업용 System III 및 System V 배포판에 포함되었다.

6. 2. Jörg Schilling's fork

고(故) 요르크 쉴링|Jörg Schillingde(오픈솔라리스 프로젝트 초기에 SCCS의 릴리스를 요청했음)[19]은 오픈솔라리스 소스 코드를 기반으로 한 SCCS의 포크[20][21]를 유지 관리했다. 이는 주요 기능 향상을 받았지만 "새 프로젝트" 모드를 사용하지 않는 한 원래 SCCS 버전과 호환된다.[22]

6. 3. Heirloom Project

Heirloom 프로젝트는 OpenSolaris 소스 코드를 기반으로 파생된 SCCS 버전을 포함하며, 2006년 12월부터 2007년 4월까지 유지 관리되었다.[23][24]

6. 4. GNU CSSC

GNU는 SCCS 호환 프로그램인 [https://www.gnu.org/software/cssc/ GNU CSSC] (Compatibly Stupid Source Control)를 제공하며, 이는 SCCS 아카이브를 CVS 또는 Subversion과 같은 최신 시스템으로 변환하는 데 가끔 사용된다.[25] 이는 완전한 SCCS 구현이 아니며,[26] 새로운 프로젝트에서 사용하는 것은 권장되지 않지만, 주로 최신 버전 관리 시스템으로 변환하기 위한 것이다.

6. 5. 기타 버전 관리 시스템

1990년대 이후, 많은 새로운 버전 관리 시스템이 개발되어 널리 사용되었으며, 이는 다수의 파일을 가진 프로젝트를 관리하고 다중 사용자 운영, 접근 제어, 자동 빌드, 네트워크 지원, 릴리스 관리 및 분산 버전 관리와 같은 고급 기능을 제공하도록 설계되었다. 비트키퍼와 팀웨어는 내부적으로 SCCS 파일 형식을 사용하며 SCCS의 후속 시스템으로 간주될 수 있다.[27][28]

BSD 시스템에서는 SCCSID가 RCSID로 대체되며, 해당 도구는 ident이다.[29] 이 시스템은 원래 RCS에서 사용되었으며 체크아웃 시 자동으로 추가된다. 결과적으로 생성된 소스 코드 개정 관리 식별자는 넷BSD[30] 및 프리BSD[31] 스타일 가이드에서 자체 코드 기반에 대해 설명하고 있다.

7. SCCS 파일 형식

SCCS 파일은 다음 세 가지 부분으로 구성된다.[15]


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

참조

[1] 간행물 The Source Code Control System http://basepath.com/[...] 2005-07-08
[2] 웹사이트 Chapter 5 SCCS Source Code Control System http://docs.oracle.c[...]
[3] 웹사이트 what https://pubs.opengro[...] IEEE and The Open Group 2022-11-28
[4] 문서 AT&T Announcement for SCCSv4 http://sccs.sourcefo[...]
[5] 문서 SCCS http://minnie.tuhs.o[...]
[6] 웹사이트 Sablime Webpage http://sablime.alcat[...]
[7] 논문 Impact of software engineering research on the practice of software configuration management. 2005-10
[8] 문서 Notes on keeping version histories of files http://web.mit.edu/g[...] Unpublished personal notes 2002-10-03
[9] 논문 Impact of software engineering research on the practice of software configuration management. 2005-10
[10] 문서 What is SCCS https://www.gnu.org/[...] GNU operating System
[11] 웹사이트 SCCS/make source available http://mail.opensola[...] 2011-11-14
[12] 문서 Home Organization Selection
[13] 문서 The evolution of a Source Code Control System 1978-11
[14] 웹사이트 SCCS http://www-h.eng.cam[...] 2016-09-12
[15] 웹사이트 General Programming Concepts: Writing and Debugging Programs https://www.ibm.com/[...] 2018-06-07
[16] 문서 An Introduction to the Source Code Control System http://sccs.sourcefo[...]
[17] 문서 Source Code Control System http://docs.oracle.c[...]
[18] 논문 VRCS: Integrating version control and module management using interactive three-dimensional graphics. IEEE 1997
[19] 웹사이트 os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com http://osdir.com/ml/[...] 2016-09-10
[20] 문서 Jörg Schilling's SCCS development website http://sccs.sourcefo[...]
[21] 웹사이트 A collection of tools written or formerly managed by Jörg Schilling. https://codeberg.org[...] 2022-11-28
[22] 문서 Schily SCCS web site http://sccs.sourcefo[...]
[23] 웹사이트 The Heirloom Development Tools http://heirloom.sour[...] 2011-11-04
[24] 문서 see CVS history http://heirloom.cvs.[...]
[25] 문서 SCCS2SVN conversion utility http://sccs2svn.berl[...]
[26] 문서 GNU CSSC list of limitations in its documentation https://www.gnu.org/[...]
[27] 웹사이트 revtool https://www.bitkeepe[...]
[28] 웹사이트 Introduction to Sun WorkShop TeamWare https://docs.oracle.[...] 2016-09-10
[29] Man ident NetBSD
[30] 웹사이트 src/share/misc/style revision 1.64 http://cvsweb.netbsd[...] NetBSD CVS repository
[31] Man style FreeBSD
[32] 웹사이트 Resource page for src 1.29 http://www.catb.org/[...] 2022-11-28
[33] 문서 ソフトウェア開発時のソースコードチェック時のSCCSの活動 https://asoservice.c[...]
[34] 간행물 The Source Code Control System http://basepath.com/[...] 2019-04-03
[35] 웹인용 Chapter 5 SCCS Source Code Control System http://docs.oracle.c[...] null
[36] 논문 VRCS: Integrating version control and module management using interactive three-dimensional graphics IEEE 1997



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com