형상 관리 도구의 이해
[형상 관리 도구] : 소스 코드나 문서의 버전 관리, 이력 관리, 추적 등 변경 사항을 체계적으로 관리할 수 있는 기능을 제공하는 도구.
가장 널리 이용되는 도구로는 CVS(Concurrent Versions System), SVN(Subersion), GIT이 대표적이다.
○CVS - 가장 오래된 형상 관리 도구 중 하나로, 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행함.
- OS: 윈도우/리눅스
- 실행환경 : CLI(Command Line Interface)
- GUI : TortoiseCVS 등
○SVN
- CVS와 같은 중앙 집중형 클라이언트-서버 방식이지만 CVS의 단점을 보완하여 현재 가장 널리 사용되고 있는 형상 관리 도구임.
- 장점 : gzip을 통합 압축으로 저장 공간 절약, atomic commit으로 커밋 실패 시 롤백 지원, 다양한 써드 파티 GUI 도구 존재
- 단점 : trunk, branch, tag가 모두 물리적인 저장 위치를 점유하므로 비효율적, Git에 비해 branch, tag 작업이 무거움
- OS: 윈도우/리눅스/맥
- 실행환경 : CLI(Command Line Interface)
- GUI : TortoiseSVN, WinSVN 등
○GIT
- 중앙 집중형 방식이 아닌 분산형 방식(DVCS)으로 각 로컬 PC에 스스로 완전한 저장소가 구성되며, 필요에 따라 중앙 집중형 방식으로도 운영할 수 있음.
- 공개 SW 커뮤니티를 중심으로 많이 확대됨.
- 장점 : 코드 꼬임에 따른 위험 감소(branch 분기 가능), 로컬 저장소가 있으므로 원격 저장소에 장애가 나더라고 쉽게 복구 가능,
여러 번의 커밋을 로컬 저장소에 실행하고, 모아진 커밋을 원격 저장소에 반영할 수 있으므로 네트워킹 빈도는 줄고 속도는 향상,
Pack 방식의 압축으로 SVN에 비해 저장 공간 절약, 다양한 써드파티 GUI 도구 존재
- 단점 : SVN의 동작 및 기본 개념, 다른 명령어가 있어 혼란 야기, 빈 디렉터리가 저장되지 않음.
- OS: 윈도우/리눅스/맥
- 실행환경 : CLI(Command Line Interface)
- GUI : 번들로 제공 - SourceTree, GitEye, git-cola 등
cf) 범위를 좀 더 키워보자면...
중앙 집중형 관리(서버/클라이언트) : SVN, CVS, Perforce, ClearCase, TFS
분산 버전 관리(DVCS) : Git, Mercurial, Bitkeeper, Darcs, Bazaar
Folder 공유 타입 : RCS, SCCS
이 있다고 한다.