# 방식에 따른 버전 관리 도구 유형
유형 | 설명 |
공유 폴더 방식 (RCS, SCCS) |
- 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사 - 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인 - 정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인 |
클라이언트/서버 방식 (CVS, SVN) |
- 중앙에 버전 관리 시스템이 항시 동작 - 개발자들의 현재 작업 내용과 이전 작업 내용 축적이 용이 - 서로 다른 개발자가 같은 파일을 작업했을 때 경고 출력 - Trac이나 CVS view와 같은 GUI 툴을 이용하여 모니터링 가능 |
분산 저장소 방식 (Git, Bitkeeper 등) |
- 로컬 저장소와 원격 저장소 구조 - 중앙의 저장소에서 로컬에 복사(clone)한 순간 개발자 자신만의 로컬 저장소에 생성 - 개발 완료한 파일 수정 이후 로컬 저장소에 커밋하고나서 다시 원격 저장소에 반영(push)하는 방식 |
# 버전 관리 도구별 특징
버전 관리 도구 | 특징 |
CVS (Concurrent Versions System) |
- 서버와 클라이언트로 구성되어 다수의 인원이 동시에 범용적인 운영체제로 접근 가능하여 버전 관리할 수 있도록 한다. - Client가 이클립스에 내장되어 있다. |
Subversion (SVN) |
- GNU의 버전 관리 시스템으로 CVS의 장점은 이어받고 단점은 개선하여 2000년에 발표되었다. - 사실상 업계 표준으로 사용되고 있으며 SVN이라고 한다. |
RCS (Revision Control System) |
- CVS와 달리 소스 파일 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠그는 방식으로 버전 컨트롤을 수행한다. |
Bitkeeper | SVN과 비슷한 중앙 통제 방식의 버전 컨트롤 툴로서 대규모 프로젝트에서 빠른 속도를 내도록 개발되었다. |
Git | - 기존 리눅스 커널의 버전 컨트롤을 하는 Bitkeeper를 대체하기 위해서 나온 새로운 버전 컨트롤로서 현재의 리눅스는 이 방법을 통해 버전 컨트롤이 되고 있다. - Git는 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 실제로 유용하다. - Git는 SVN과 다르게 commit은 로컬 저장소에서 이루어지고, push라는 동작으로 원격 저장소에 반영된다 - 원격 저장소에서 받아올 때도 pull과 fetch로 서버에서 변경된 내역을 받아올 수 있다. |
Clear Case | - IBM에서 제작되었다. - 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있다. |
# 버전 관리 도구 사용 시 유의점
> 버전에 대한 정보를 언제든지 접근할 수 있어야 한다
> 제품 소프트웨어 개발자, 배포자 이외에 불필요한 사용자가 소스를 수정 X
> 버전 관리는 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발 가능해야 한다
> 에러 발생 시 최대한 빠르게 복구되어야 한다
728x90