음,,,면접을 보다가 형상관리 툴인 git과 svn의 차이점에 대해서 질문을 해서 내가 아는 기초 지식과 git과 svn을 사용해본 나로써 느낀 차이점을 기억하면서 대답을 하였지만,,,생각만큼 제대로 면접관에게 전달되지 못한 것 같아 다시 한번 정리해본다,,,흑흑
형상관리 툴이란?
- 소스 코드를 버전별로 편하게 관리할 수 있게 제공해주는 클라이언트 툴이다.
- 대표적으로 svn,git이 있다.
- 여러명의 개발자가 모여 개발을 진행 할 때, 누가 어떻게 소스를 수정했고, 얼마나 진행 했는지 추적이 용이한 장점이 있다.
상세 종류
1. Client/Server 타입
-> svn, cvs, Perforce, ClearCase, TFS
2. 분산저장소 타입
-> Git, Mercurial, Bitkeeper
3. 폴더 공유 타입
-> RCS, SCCS
SVN
현재 내가 지금 현업에서 쓰고 있는 툴이다.
처음에는 서투르기도 했고, git보다는 시인성에도 좋지 않았기 때문에 사용하는데 시간이 걸렸다.
특징
- 대부분의 소스를 완성하고 해당 소스를 중앙 repository에 commit 한다.
- 개발자가 자신만의 히스토리를 가질 수 없기 때문에 본인이 짠 코드에 대해 그전 작업 내용을 확인하는 것에 한계가 있다.
- commit을 하게 되면 바로 중앙 repository로 저장 되기 때문에 다른 개발자들에게 바로 영향을 미친다.
Git
대학교 때 처음 써보았는데 ui가 내 딴에는 쉽게 사용할 수 있게 되어있다고 생각했고, 하지만 형상관리 툴 자체를 처음 사용해보았을 때라 여러번 날려 먹고 재생성 했던 안좋은 추억이 있다,,,
특징
- 로컬 repository를 지원하기 때문에 매우 빠른 속도를 가지고 있다.
- 생각보다 기능이 많아 svn 보다 사용하는데 시간이 걸린다.
- 내 자신만의 history를 작성 할 수 있다는 것이 장점
- 개발자가 local repository에서 자유롭게 작성하다가 원하는 때에 원격 repository에 commit 할 수 있다.