개요
형상관리 툴 Git, SVN 각각 특징 및 차이점 알아보기 |
내용
형상관리(Version Control Revision Control) 툴
- 소프트웨어 버전 관리 툴이라고도 한다.
- 형상관리는 소스의 변화를 끊임없이 관리하는 것을 말한다.
- 소스를 버전 별로 관리할 수 있어서 개발할 때 실수로 소스를 삭제하거나, 수정하기 이전으로 돌아가야되는 경우 유용하게 사용되는 툴.
- 팀 프로젝트에서도 누가 무엇을 어떻게 수정했는지도 알 수 있기 때문에 코드를 병합하거나 수정된 소스를 추적하는 데에도 쓰인다.
형상관리툴 종류
- Client/Server 타입: Subversion(SVN), CVS, Perforce, ClearCase, TFS
- 분산저장소 타입 : Git, Mercurial, Bitkeeper, SVK, Darcs
- Folder 공유 타입 : RCS, SCCS
Subversion(SVN)
- 2000년에 CVS를 대체하기 위해 만들어졌으며 현재까지 두루 사용되는 형상관리 툴
- trunk: 프로젝트에서 가장 중심이 되는 디렉토리
- branches: trunk에서 뻗어져 나온 나뭇가지를 뜻함. 프로젝트 내의 작은 프로젝트라고 생각하면 됨
- tags: 버전 별로 소스코드를 따로 관리하는 공간(버전 별로 태그를 붙여서 tag 디렉토리 안에 보관한다고 생각하면 됨)
특징
- SVN은 보통 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit
- commit의 이미 자체가 중앙 저장소에 해당 기능을 공개한다는 의미.
- (GIT 과 가장 큰 차이점) 개발자가 자신만의 version history를 가질 수 없다. (그렇기 때문에 local History를 이용하긴 하지만, 일시적이다. 내가 몇일전 까지에 한하여 작업했던 내역을 확인 가능하지만 버전 관리가 되진 않는다.)
- commit한 내용에 실수가 있을 시에 다른 개발자에게 바로 영향을 미치게 되는 단점도 있다.
Git
- 매우 빠른 속도와 분산형 저장소. SVN보다 많은 기능을 지원하는 대신 당연히 익숙해지기에 더 많은 시간이 필요함.
- SVN을 사용하다 GIT을 사용하게 되면 무척 헷갈리고 개념 이해가 잘 되지 않았었다.
특징
- (SVN 과 가장 큰 차이점) 반면, git은 개발자가 자신만의 commit history를 가질 수 있고, 개발자와 서버의 저장소는 독립적으로 관리가 가능.
- commit한 내용에 실수가 있더라도 이 바로 서버에 영향을 미치지 않는다
- 개발자는 마음대로 commit(push)하다가 자신이 원하는 순간에 서버에 변경 내역(commit history)을 보낼 수 있으며, 서버의 통합 관리자는 관리자가 원하는 순간에 각 개발자의 commit history를 가져올 수 있음.
SVN과 Git의 차이점
- Git이 SVN과 다른 점은 분산형 관리 시스템이라는 것이다.
- SVN : 중앙 서버에 소스코드와 히스토리를 저장
- Git : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
- 그렇기 때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
- 사본을 로컬에서 관리하기 때문에 GIT이 SVN에 비해 훨씬 빠르다. (SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야 한다.)
'개발메모 > 간단정리' 카테고리의 다른 글
[간단정리] Git 이란 (0) | 2022.06.16 |
---|---|
[간단정리] 프로세스, 스레드 특징 및 차이점 (0) | 2022.06.16 |
[간단정리]프레임워크, 라이브러리 특징 및 차이점 (0) | 2022.06.08 |
[간단정리] String, StringBuilder, StringBuffer 특징 및 차이 (0) | 2022.06.06 |
[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 ) (1) | 2022.05.23 |