관리 메뉴

Life goes slowly...

VCS - 버전관리 시스템에는 어떤것들이 있을까? 본문

프로그래밍/VCS

VCS - 버전관리 시스템에는 어떤것들이 있을까?

빨강소 2020. 8. 16. 00:00
728x90
반응형
버전관리 시스템 - VCS(Version Control System)

버전 관리 시스템이란, 프로그래밍 소스 관리(Source Control), 프로그래밍 소스 코드 관리(SCM - Source Code Management)를 말합니다.

대게 일반적으로 소프트웨어 프로그래밍 소스 코드만을 관리하는 내역을 주로 버전 관리라고 정의하는데, 산업 공학이나 이전 생산 기반 제조 공학 등에서 소프트웨어 쪽으로 넘어오는 학문적 관심에 의해 이전 생산 공학에서도 사용하던 개념을 가져오게 되었습니다. 그에 따라 모든 생산 관련된 공학 및 프로그래밍 소프트웨어 버전 관리와 형상 관리의 개념이 따라왔다고 볼 수 있겠습니다.

프로그래밍 소프트웨어 등을 작성할 때 코드의 변경점을 관리하는 것은 아주 중요합니다. 소스 코드를 관리 및 백업&복구가 쉽고 다른 업무자들과 프로그래밍 프로젝트 진행시 협업이 중요한 부분이 될 수 있습니다.

 

한마디로 정의하자면 의미 있는 변화들의 기능 개선과 버그 수정, 요구 사항에 따른 프로그래밍 소스 수정을 관리하는 버전 관리입니다. 문서나 코드의 변경된 부분을 저장해서 과거의 상태를 열람, 복원할 수 있도록 하며 협업하는 모든 사람들의 변경사항을 함께 저장하며 충돌을 방지합니다.

 

버전관리 시스템 VCS 종류

1. CVS (Concurrent Versions System, 동시 버전 시스템)

1986년에 개발되어 1990년에 출시된 서버-클라이언트 프로그래밍 형상관리 시스템입니다.

Linux, Windows, Unix 등 다양한 운영체제를 지원하고 하나의 파일에 대해 동시 작업이 가능하여 파일 전체를 저장하는 것이 아니라 변경된 부분만을 저장하여 소스의 용량을 작게 차지하여 많은 개발자들이 사용해왔으나 속도가 상대적으로 느려 Commit 실패 시 Rollback 처리가 되지 않습니다. 이러한 한계로 CVS를 대체하는 Subversion이 개발되어 사용되고 있습니다.

 

2. Subversion

 

CVS(Concurrent Versions System) 의 단점을 보완하기 위해서 2000년에 만들어져 소프트웨어 프로그래밍 및 중앙관리만을 지원하는 시스템으로 파일과 디렉터리의 삭제, 이동, 이름 변경, 복사 등을 지원하여 소스파일 이외에도 이진 파일도 효율적으로 저장할 수 있습니다. 저장소의 크기에 상관없이 일정한 시간에 업데이트가 가능하며 처리 속도가 상대적으로 빠릅니다.

그렇지만 안정성이 CVS보다 불안정하여. svn 디렉터리로 인하여 저장소의 가독성이 떨어지게 됩니다.

서브 버전 서버와 클라이언트는 http, https, svn, svn+ssh의 규약으로 통신을 하게 됩니다.

 

3. Mercurial

 

Python의 프로그래밍 코드 소스 관리를 위해서 개발된 크로스-플랫폼 분산 버전 관리 도구입니다. Git의 GUI가 불편한 개발자들이 많이 선택하고 있는 형상관리 시스템이기도 합니다. 사용하기 쉬운 GUI로 인하여 쉽게 사용이 가능하며 Windows에서 성능이 더 좋고 패키지에 필요로 한 대부분이 확장이 포함되어 추가 설정이 필요 없는 장점이 있습니다.

 

4. Git

 

2005년 리눅스 커널의 개발을 위해서 만들게 된 프로그래밍 형상 관리 시스템입니다. 대부분의 형상관리 시스템과 다른 모든 디렉터리는 네트워크 접속이나 중앙 서버와는 독립적으로 동작하는 완전한 이력 및 완전한 버전 추적 기능을 갖춘 형상관리 시스템입니다. 처리 속도가 빠르며 Repository의 완전한 복사본을 로컬에 저장이 가능하며 일시적인 작업에 대한 이력 관리가 쉽고 이미 Commit 한 소스파일도 수정이 가능합니다. 장소에 구애받지 않고 협업이 가능하여 로컬에서도 작업이 가능합니다.

하지만 이전 CVS 나 Subversion을 사용했던 개발자들에게는 불편함이 있을 수 있습니다. 또한 대용량 소스 코드 관리에 부적절합니다.

 

기타 버전 관리 시스템

로컬 관리도구

무료 / 오픈소스

SCCS (1972), RCS (1982)

유료 / 사용소스

PVCS (1985), QVCS (1991)

클라이언트 및서버 관리도구

무료 / 오픈소스

CVS (1986, 1990 in C), CVSNT (1998), QVCS Enterprise (1998), Subversion (2000)

유료 / 사용소스

Software Change Manager (1970s), Panvalet (1970s), Endevor (1980s), DSEE (1984), Synergy (1990), ClearCase (1992), CMVC (1994), Visual SourceSafe (1994), Perforce (1995), StarTeam (1995), Integrity (2001), Surround SCM (2002), AccuRev SCM (2002), SourceAnywhere (2003), SourceGear Vault (2003), Team Foundation Server (2005), Rational Team Concert (2008)

분산 버전 관리도구

무료 / 오픈소스

GNU arch (2001), Darcs (2002), DCVS (2002), ArX (2003), Monotone (2003), SVK (2003), Codeville (2005), Bazaar (2005), Git (2005), Mercurial (2005), Fossil (2007), Veracity (2010)

유료 / 사용소스

TeamWare (1990), Code Co-op (1997), BitKeeper (1998), Plastic SCM (2006)

728x90
반응형
Comments