쏭의 개발 블로그
형상관리 - Git, SVN 본문
형상관리
- 소스의 변화를 끊임없이 관리하는 것
- 소스를 버전 별로 관리할 수 있어 개발 시 실수로 소스를 삭제하거나 수정하기 이전으로 돌아가야되는 경우 유용하게 사용됨
- 팀 프로젝트에서 누가 무엇을 어떻게 수정했는지도 알 수 있기 때문에 코드를 병합하거나 수정된 소스를 추적하는데에도 쓰임
형상관리툴의 종류
- Client/Server : Subversion(SVN), CVS, Perforce, ClearCase, TFS
- 분산저장소 : Git, Mercurial, Bitkeeper, SVK, Darcs
- Folder 공유 : RCS, SCCS
1) SVN(Subversion)
- 한 저장소(Repository)를 가지고 모든 개발자가 동시에 작업을 수행한 뒤 개발 종료 후 그 저장소를 가지고 배포
- 2000년에 CVS를 대체하기 위해 만들어졌으며 현재까지 두루 사용되는 형상관리툴
- Trunk : 프로젝트에서 가장 중심이 되는 디렉토리
- branches : trunk에서 뻗어져 나온 나뭇가지를 뜻함. 프로젝트 내의 작은 프로젝트
- tags : 버전별로 소스코드를 따로 관리하는 공간
- 버전별로 태그를 붙여 tag 디렉토리 안에 보관한다고 생각하면 됨
특징
- 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit
- commit의 의미 자체가 중앙 저장소에 해당 기능을 공개한다는 의미
- 개발자가 자신만의 version history를 가질 수 없음 - Git과의 가장 큰 차이점
- commit한 내용에 실수가 있을 시 다른 개발자에게 바로 영향을 미치게 되는 단점이 존재
2) Git
- 동일한 저장소에서 각각 Branch를 따간 후 필요한 부분을 개발하고 main branch에 합친 뒤(merge) main branch를 배포하는 방식으로 사용
- 매우 빠른 속도를 가진 분산형 저장소
- 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개 소프트웨어
- SVN 보다 많은 기능을 지원하는 대신 익숙해지기까지 더 많은 시간이 필요
특징
- 개발자가 자신만의 commit history를 가질 수 있으며 개발자와 서버의 저장소는 독립적으로 관리 가능 - SVN과 가장 큰 차이점
- commit한 내용에 실수가 있더라도 바로 서버에 영향을 미치지 않음
- 개발자는 마음대로 commit(push)하다가 자신이 원하는 순간에 서버에 변경 내역(commit history)를 보낼 수 있으며, 서버의 통합 관리자는 관리자가 원하는 순간에 각 개발자의 commit history를 가져올 수 있음
2) 비교
'형상관리' 카테고리의 다른 글
Git vs Github (0) | 2023.01.31 |
---|