소스코드제어시스템
Source Code Control System이 기사는 검증을 위해 추가적인 인용이 필요합니다. :– · · · (2010년 3월)(이 를 제거하는 및 |
| 원본 작성자 | 마크 J. 록킨드 |
|---|---|
| 개발자 | 벨 연구소 |
| 초기출시 | 1973; 1973 |
| 저장소 | 해당 없음 |
| 기재. | 첫 번째 버전: SNOBOL4 다시 쓰기: C |
| 운영체제 | OS/360, 유닉스, 유닉스 계열 |
| 플랫폼 | IBM System/370, PDP-11, IA-32 |
| 유형 | 버전 제어 |
| 면허증. | 독점 라이센스, 공통 개발 및 배포 라이센스 |
| 웹사이트 | 개방형 그룹 베이스 규격 Issue 7, IEEE 규격 1003.1-2008, 2016년판 |
소스 코드 제어 시스템(Source Code Control System, SCCS)은 소프트웨어 개발 중에 소스 코드 및 기타 텍스트 파일의 변화를 추적하도록 설계된 버전 제어 시스템입니다.이를 통해 사용자는 원본 코드의 이전 버전과 저장된 변경 사항을 검색할 수 있습니다.1972년 말에 OS/360을 실행하는 IBM System/370 컴퓨터용으로 Marc Rochkind에 의해 Bell Labs에서 개발되었습니다.[1]
SCCS의 특징은 소스 코드에 내장된 sccsid 문자열이며, 각 리비전마다 SCCS에 의해 자동으로 업데이트됩니다.[2]이 예는 C 프로그래밍 언어에서의 사용을 보여줍니다.
정적 문자 sccsid[] = "@(#)ls.c 8.1 (버클리) 6/11/93";이 문자열에는 파일 이름, 날짜가 들어 있으며 주석도 포함할 수 있습니다.컴파일 후 패턴을 찾아 이진 파일과 객체 파일에서 문자열을 찾을 수 있습니다.@(#)어떤 소스코드 파일이 컴파일중에 사용되었는지 결정하는데 사용될 수 있습니다.what명령은 버전 문자열에 대한 이 검색을 자동화하는 데 사용할 수 있습니다.[3]
역사
1972년, Marc Rochkind는 Bell Labs에서 OS/360 MVT를 실행하는 IBM System/370 컴퓨터를 위해 SNOBOL4에서 SCCS를 개발했습니다.[1] 그는 UNIX에서 사용할 수 있도록 C 프로그래밍 언어로 SCCS를 다시 작성했고 1973년 PDP-11에서 실행했습니다.
최초로 공개된 버전은 1977년 2월 18일부터 SCCS 버전 4입니다.[4]PWB(Programmer's Workbench) 버전의 운영 체제에서 사용할 수 있었습니다.SCCS의 릴리스 4는 텍스트 기반 히스토리 파일 형식을 사용한 최초의 버전이며 이전 버전은 이진 히스토리 파일 형식을 사용했습니다.Release 4는 Marc Rochkind에 의해 더 이상 작성되거나 유지되지 않았습니다.그 후, SCCS는 AT&T의 상용 시스템 III 및 시스템 V 배포판에 포함되었습니다.BSD의 조상인 32V로 라이센스가 부여되지 않았습니다.[5]SCCS 명령 집합은 이제 Single UNIX 사양의 일부입니다.
SCCS는 이후 버전 제어 시스템, 특히 RCS와 이후의 CVS가 더 널리 채택되기 전까지 유닉스의 지배적인 버전 제어 시스템이었습니다.오늘날, 이러한 초기 버전 제어 시스템은 일반적으로 더 이상 쓸모가 없는 것으로 여겨지는데, 특히 분산 버전 제어 시스템을 대부분 수용한 오픈 소스 커뮤니티에서 그러합니다.그러나 SCCS 파일 형식은 여전히 BitKeeper 및 TeamWare를 포함한 몇몇 최신 버전 제어 프로그램에서 내부적으로 사용됩니다.후자는 SCCS의 프론트엔드입니다.Wayback Machine 2016-07-22의 Sablime Archive는 SCCS의[6] 수정된 버전에서 개발되었지만 SCCS와 호환되지 않는 기록 파일 형식을 사용합니다.SCCS 파일 형식은 인터리브 델타(또는 위브[7])라는 저장 기법을 사용합니다.이 스토리지 기술은 현재 많은 버전 제어 시스템 개발자들에 의해 "Precise Codeville"("pcdv") 병합과 [8]같은 고급 병합 및 버전화 기술의 기초로 간주되고 있습니다.
1999년에 2000년 문제를 수정한 것 외에도 다양한 UNIX 벤더별 SCCS 버전에 대한 적극적인 개발은 이루어지지 않았습니다.[9]2006년에 Sun Microsystems(오늘날 오라클의 일부)는 Solaris를 오픈 소스화하기 위한 노력의 일환으로 CDDL 라이선스 하에 Solaris 버전의 SCCS를 오픈 소스로 출시했습니다.[10]
배경
소스 코드 제어 시스템(SCCS)은 파일 및 이력 변경을 제어하는 시스템입니다.소프트웨어는 일반적으로 버그를 수정하고 알고리즘을 최적화하며 추가 기능을 추가하여 새로운 버전으로 업그레이드됩니다.[11]소프트웨어를 변경하면 버전 제어가 필요한 문제가 발생합니다.[1]
- 소스 코드는 모든 버전에서 반복되므로 공간을 너무 많이 차지합니다.
- 언제 어디서 변화가 발생했는지에 대한 정보를 얻기가 어렵습니다.
- 고객에게 문제가 있는 정확한 버전을 찾기가 어렵습니다.
SCCS는 이러한 문제를 해결하기 위해 만들어졌습니다.AT&T의 SCCS는 IBM OS용으로 5개의 주요 버전과 UNIX용으로[12] 5개의 주요 버전이 있었습니다. SCCS를 사용하는 두 가지 구체적인 구현은 유닉스용 PDP 11과 OS용 IBM 370입니다.[1]
구성.
SCCS는 SCCS 명령어와 SCCS 파일의 두 부분으로 구성됩니다.[13]모든 기본 작업(예: 생성, 삭제, 편집)은 SCCS 명령으로 구현할 수 있습니다.[13]SCCS 파일에는 고유한 형식 접두사가 있습니다.s., SCCS 명령에 의해 제어됩니다.[2]
SCCS 파일
SCCS 파일은 세 부분으로 구성됩니다.[14]
- 델타표
- 액세스 및 추적 플래그
- 본문
델타표
SCCS에서 델타(delta)는 SCCS 파일의 단일 개정판입니다.델타는 델타 테이블에 저장되므로, 각 SCCS 파일에는 고유한 변경 기록이 있습니다.[14]
SCCS 파일의 제어 및 추적 플래그
각 SCCS 파일의 모든 작업은 플래그에 의해 추적됩니다.기능은 다음과 같습니다.[14]
- 모든 SCCS 파일의 편집 권한을 설정합니다.
- 모든 SCCS 파일의 각 릴리스를 제어합니다.
- 모든 SCCS 파일의 공동 편집을 허용합니다.
- 모든 SCCS 파일의 상호 참조 변경 사항.
몸
SCCS는 서로 다른 델타에 적용된 삽입 및 삭제를 추적하기 위해 세 가지 유형의 제어 레코드를 사용합니다.삽입 제어 기록, 삭제 제어 기록, 종료 제어 기록입니다.사용자가 텍스트의 일부를 변경할 때마다 변경 내용을 둘러싼 컨트롤 레코드가 삽입됩니다.컨트롤 레코드는 원본 텍스트 레코드와 함께 본문에 저장됩니다.[1]
SCCS 기본 명령
SCCS는 create, get, edit, prt와 같은 간단한 구문으로 소스 코드 관리 기능을 수행하거나 시작하는 매크로 호출 형태의 명령어 세트를 제공합니다.[15][16]또한 관리 중인 파일의 수정 내역에 대한 액세스 권한도 제공합니다.이러한 명령어는 드라이버 프로그램 sccs에 인수 동사로 구현됩니다.
만들다
sccs 명령어 create는 원본 파일의 텍스트를 사용하여 새 기록 파일을 만듭니다.예를 들어,
$sccs program.c program.c: 1.187줄출력은 이름, 버전 및 선입니다.
명령어는 관리자로 확장하여 새 기록 파일을 만든 후 파일을 검색하는 매크로입니다.
편집
$sccs program.c 1.1 new delta 1.287 행 편집특정 파일을 편집합니다.
명령어는 -e를 얻기 위해 확장되는 매크로입니다.
델겟
$sccs delget program.c comments ? 주 기능 향상 1.210 삽입 0 삭제 87 변경 1.297 줄새 버전을 체크인하고 scs에서 새 버전을 가져옵니다.
명령어는 새 버전 파일을 체크인하기 위해 delta로 확장한 다음 get to retrieve 파일로 이동하는 매크로입니다.
얻다
$sccs get program.c 1.187 줄출력은 특정 파일에서 가져올 버전과 줄입니다.
Prt
$sccs prt program.c이 명령은 소스 코드 변경에 대한 보고서를 생성합니다.
구현
UNIX SCCS 버전
대부분의 UNIX 버전에는 SCCS 버전이 포함되어 있지만 더 이상 활발하게 개발되지 않는 경우가 많습니다.[17][better source needed]
저그 실링의 포크
(오픈 솔라리스 프로젝트 초기에 SCCS의 출시를 요청한) [18]고 Jörg Schilling[는 오픈 솔라리스 소스 코드에 기반한 SCCS의[19][20] 포크를 유지했습니다.주요 기능이 향상되었지만 "새로운 프로젝트" 모드를 사용하지 않는 한 원래 SCCS 버전과 호환됩니다.[21]
가보 프로젝트
가보 프로젝트에는 오픈 솔라리스 소스 코드에서[22] 파생되어 2006년 12월부터 2007년 4월까지 유지된 SCCS 버전이 포함되어 있습니다.[23]
GNU 변환 유틸리티
GNU는 SCCS 호환 프로그램 GNU CSSC("Compatible Stupid Source Control")를 제공하는데, 이 프로그램은 SCCS 아카이브를 CVS나 서브버전과 같은 새로운 시스템으로 변환하는 데 가끔 사용됩니다.[24] 완전한 SCCS[25] 구현은 아니며 새로운 프로젝트에 사용하도록 권장되지 않지만 대부분 현대 버전 제어 시스템으로 변환하기 위한 것입니다.
기타 버전 제어 시스템
1990년대 이후 다수의 파일을 가진 프로젝트를 관리하기 위해 설계되고 다중 사용자 운영, 액세스 제어, 자동 구축, 네트워크 지원, 릴리스 관리 및 분산 버전 제어와 같은 고급 기능을 제공하는 많은 새로운 버전 제어 시스템이 개발되고 인기를 얻고 있습니다.Bitkeeper와 TeamWare는 내부적으로 SCCS 파일 형식을 사용하며 SCCS의 후계자로 간주될 수 있습니다.[26][27]
BSD 시스템에서 SCCSID는 RCSID로 시작 및 종료됩니다.$;해당 공구가 동일함.[28]이 시스템은 원래 RCS에서 사용되며 체크아웃 시 자동으로 추가됩니다.결과적인 소스 코드 리비전 제어 식별자는 NetBSD[29] 및 FreeB에 문서화되어 있습니다.자체 코드 기반을 위한 SD[30] 스타일 가이드.NetBSD는 사용자 지정 키워드 $NetBSD: ...를 정의합니다.$FreeB중에SD는 $FreeB를 정의합니다.SD: ...$매크로 이름이 __FBSDID로 변경되었습니다.
SRC 버전 제어 시스템은 내부적으로 SCCS 파일 형식(또는 RCS)을 사용할 수도 있으며 단일 파일 프로젝트만 관리하면서 SCCS에 더 나은 사용자 인터페이스를 제공하는 것을 목표로 합니다.[31]
참고문헌
- ^ 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, archived from the original (PDF) on 2011-05-25, retrieved 2005-07-08
- ^ a b Oracle. "Chapter 5 SCCS Source Code Control System". Programming Utilities Guide.
- ^ "what". IEEE and The Open Group. n.d. Retrieved November 28, 2022.
- ^ http://sccs.sourceforge.net/PWB.html SCCSv4 AT&T 발표
- ^ SCCS what(1) Wayback Machine의 The Unix Heritage Society Archived 2005-08-31 웹사이트에 있는 4BSD, 1980의 manpage.
- ^ 에스튜블리에, 재키, 데이비드 르블랑, 안드레 반 데어 훅, 리다르 콘라디, 제프리 클렘, 월터 티치, 다아시 위보그-베버."소프트웨어 공학 연구가 소프트웨어 구성 관리 실무에 미치는 영향"ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (2005년 10월): 383–430
- ^ Hudson, Greg (2002-10-03), Notes on keeping version histories of files, Unpublished personal notes
- ^ 에스튜블리에, 재키, 데이비드 르블랑, 안드레 반 데어 훅, 리다르 콘라디, 제프리 클렘, 월터 티치, 다아시 위보그-베버."소프트웨어 공학 연구가 소프트웨어 구성 관리 실무에 미치는 영향"ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (2005년 10월): p.398
- ^ SCCS, GNU 운영 체제란?
- ^ Stephen Lau, Sun Microsystems (2006-12-19). "SCCS/make source available". Archived from the original on April 25, 2012. Retrieved 2011-11-14.
- ^ 홈 조직 선택 프로퀘스트 215925387
- ^ 소스 코드 제어 시스템의 발전.앨런 L.Glasser, sigmetrics로 출판, UNIX 상의 SCCS가 버전 4였던 1978년 11월
- ^ a b "SCCS". www-h.eng.cam.ac.uk. Retrieved 2016-09-12.
- ^ a b c IBM (7 June 2018). "General Programming Concepts: Writing and Debugging Programs". IBM Knowledge Center.
- ^ Eric Allman, Project Ingres, 버클리 캘리포니아 대학교 소스코드 제어시스템 소개
- ^ 소스 코드 제어 시스템 프로그래밍 유틸리티 안내서
- ^ 코이케, 히데키, 후이추 "VRCS: 인터랙티브 3차원 그래픽을 이용한 버전 제어 및 모듈 관리 통합"시각언어학, 1997.진행 중입니다.1997 IEEE 심포지엄.IEEE, 1997.
- ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com". osdir.com. Retrieved 10 September 2016.
- ^ Jörg Silling의 SCCS
- ^ "A collection of tools written or formerly managed by Jörg Schilling". Codeberg. 22 October 2022. Retrieved 28 November 2022.
development has been picked up by a group of volunteers who would like to keep the project alive and well
- ^ Schilly SCCS 웹 사이트: "다가오는 SCCSv6가 POSIX 및 과거 SCCS 구현과 계속 호환될 수 있을까요?"
- ^ Gunnar Ritter (20 June 2010). "The Heirloom Development Tools". Retrieved 4 November 2011.
- ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ CVS 기록 보기
- ^ SCCS2SVN 변환 유틸리티 SCCS와 CSSC 둘 다와 함께 작동하는 웨이백 머신에서 아카이브 2009-12-22
- ^ GNU CSSC의 문서 제한 목록
- ^ "revtool". BitKeeper Documentation.
- ^ "Introduction to Sun WorkShop TeamWare". docs.oracle.com. Retrieved 10 September 2016.
- ^ – NetBSD 일반 명령 매뉴얼
- ^ "src/share/misc/style revision 1.64". NetBSD CVS repository.
- ^ – FreeBSD 커널 개발자 매뉴얼
- ^ "Resource page for src 1.29". January 21, 2022. Retrieved November 28, 2022.
추가열람
- SCCS가 어떻게 발명되었는지에 대한 Marc Rochkind의 에세이
- – 개방형 그룹의 셸 및 유틸리티 참조, 단일 UNIX 규격, 버전 4
- – FreeBSD 일반 명령 매뉴얼
- – Solaris 11.4 사용자 명령 참조 설명서
- – AIX 7.3 수동 페이지
- – HP-UX 11i 사용자 명령 설명서
- – IRIX 6.5 사용자 명령 설명서