DevOps/Git

[Git] Git, SVN 특징 및 차이점

sihyeong 2024. 1. 7. 23:08

Subversion(SVN)

  • 2000년에 CVS를 대체하기 위해 만들어졌으며 현재까지 두루 쓰이는 형상관리 툴이다.
  • 프로젝트 소스는 SVN 서버의 Trunk라는 곳에 위치, 자신의 Local에 Trunk의 소스를 다운받아 수정 후 추가하고 업로드(commit)하는 방식이다.
  • 다른 개발자들과 떨어져 작업하기 위해 본인이 작업할 Branch를 만들어 작업 후 Merge를 통해 Trunk와 소스를 합치는 형태로 개발하게 된다.

 

특징

  • SVN은 보통 대부분의 기능을 완성해놓고 중앙 저장소에 commit한다.
  • commit을 하게되면 중앙 저장소에 해당 기능을 공개하겠다는 의미이다.
  • Git과의 가장 큰 차이점으로는 자신만의 version history를 가질 수 없다.
  • commit한 내용에 실수가 있을 경우 다른 개발자가 해당 commit에 영향을 받을 수 있다.
  • 중앙 집중식이라 네트워크에 문제가 생기거나 하면 로컬에서의 작업이 제한된다.
  • 파일에 변경이 없다면 해당 내용을 저장하지 않고, 변경이 있는 파일에 대해서만 기록하게 된다. 따라서 커밋 내역들이 많아진다면, 각 파일들이 처음 만들어진 시점부터 변경사항들을 모두 더해 현재 내용을 계산하기 때문에 관리 역사가 길수록 느려진다. (델타 방식)

 

Git

  • 빠른 속도를 가진 분산형 저장소
  • SVN보다 많은 기능을 지원하기 때문에 익숙해지기에 많은 시간을 필요로 한다.

 

특징

  • 변경 내역이 없더라도 새로운 버전이 만들어질 때 마다 해당 버전에서의 각 파일이 최종 상태 그대로 저장되어 있다. 파일의 변경이 없다면 이전 파일의 내용을 그대로 가져와 저장한다. 따라서 관리 역사가 길어져도 빠른 속도를 유지할 수 있다. (스냅샷 방식)
  • 중앙 집중식 버전관리가 아니라 분산 버전 관리 방식을 이용한다.
  • commit한 내용에 실수가 있더라도 바로 서버에 영향을 끼치지 않는다.
  • 개발자는 자신만의 commit history를 가지고 마음대로 commit하다가 원하는 순간에 서버에 변경 내역을 보낼 수 있다.