Git, SVN, CVS - 형상 관리 툴 비교
형상 관리 툴에는 Git, SVN, CVN, Perforce, SourceSafe 등 다양한 것들이 있습니다. 이 중에서 가장 보편적으로 사용하고 있는 Git, SVN, CVN에 대해서 정리하였습니다.
먼저, 형상 관리란 무엇인지 알아봅시다.
형상 관리란?
형상 관리(SCM, Software Configuration Management)는 소프트웨어 개발 프로세스 각 단계에서 소프트웨어의 변경 점을 체계적으로 추적하고 관리하는 일렬의 활동입니다.
단지 소스 코드의 버전 관리만을 의미하는 것이 아니라 소프트웨어의 생명 주기 동안의 요구 사항, 설계 문서, 소스 코드, UI 문서, Test Case 및 각종 결과물에 대해서 형상을 만들고, 형상들의 관계 및 변경 사항, 변경 시점 등을 체계적으로 관리하는 것으로 소프트웨어 개발에서 필수 활동 중에 하나입니다.
최근 구글 트렌드(Google Trends)로 CVN, SVN, Git의 웹 검색량을 확인해보니 Git이 최근 검색량이 80% 이상으로 가장 많은 관심을 받고 있습니다.
■ CVS - Concurrent Version System
1990년에 출시되었으며 OSS(Open Source Software)로 서버와 클라이언트로 구분되어, 개발과정에서 사용하는 파일들의 변경 명세를 관리하기 위한 시스템입니다.
특징
1. 오랜 기간 많은 유저가 사용하였고 시스템이 안정적임.
2. 중앙에 위치한 Repository에 파일을 저장하고, 모든 사용자가 파일에 접근할 수 있도록 설계.
(서버는 Unix 종류 시스템에서 구동, client software는 다양한 운영체제에서 가능)
3. Checkout으로 파일을 복사하고, Commit을 통해 변경 사항을 저장.
4. 파일의 히스토리를 보존하기 때문에 과거 이력을 확인할 수 있음.
5. Commit 중 오류가 발생하면 롤백되지 않음.
6. 다른 개발자가 작업 중인 파일에 덮어쓰기가 방지.
7. Repository를 백업하는 것만으로 프로젝트의 백업이 될 수 있음.
8. 상대적으로 속도가 느림.
■ SVN - Subversion
CVS의 단점을 보완하기 위해 2000년에 만들어졌으며, OSS(Apache)로 서버와 클라이언트로 구분되어, 개발과정에서 사용하는 파일들을 관리하기 위한 시스템입니다.
특징
1. 최초 1회에 한해 파일 원본을 저장하고 이후에는 실제 파일이 아닌 원본과 차이점을 저장하는 방식
2. 언제든지 원하는 시점으로 복구가 가능함.
3. Trunk, Branches, Tags의 폴더로 구성하여 형상 관리함.
4. import, commit, commit log, checkout, revert, switch, update, merge 등의 명령어를 사용함.
■ Git
2005년 리누스 토르발스가 리눅스 커널의 개발을 위해 만들었으며, OSS(GPL2)로 개발자가 중앙 서버에 접속하지 않은 상태에서도 코딩 작업을 할 수 있도록 지원하는 버전 관리 시스템입니다.
특징
1. Branching 모델, 로컬에 다수의 독립성이 보장되는 branch를 허용하고 쉽게 생성, 병합, 삭제를 지원함
2. 원격 서버 Git Repository에 push 하지 않은 채 여러 branch 생성이 가능함
3. 로컬 우선 작업을 통해 성능이 SVN, CVS보다 우수함.
4. 팀 개발을 위한 분산 환경 코딩에 최적화
5. 파일 암호화 및 체크섬(checksum)을 통한 데이터 보장
6. Staging Area를 통해 서버의 Repository로 업로드함.
7. 원격 Repository 장애에도 문제없이 버전 관리 가능함.
'파이썬 기초' 카테고리의 다른 글
[Python Pandas] 데이터 불러오기 CSV 파일 (0) | 2020.09.14 |
---|---|
Git을 이용한 코드 버전 관리 (0) | 2020.09.13 |
[파이썬 코딩] 람다 함수(lambda function) 이해하기 (0) | 2020.08.31 |
[파이썬 코딩] 예외 처리 제대로 이해하기 (0) | 2020.08.23 |
if __name__ == "__main__" 제대로 이해하기 (0) | 2020.08.22 |