SVN(Subversion) 과 Git 의 차이
개인 공부를 하며 정리한 글입니다.
틀린 부분, 수정할 부분이 있다면 언제든 피드백 환영입니다 :)
대표적인 버전 관리 시스템인 SVN과 Git의 차이에 대해 정리해 보았습니다.
1. 중앙관리 vs 분산관리
SVN
- 오픈 소스 라이선스에 따라 배포되는 중앙 집중식 버전 관리 및 개정 관리 시스템.
- commit 시, 모든 변경 사항을 중앙 저장소로 다시 보낸다.
- 모든 사용자는 branching을 통해 동일한 중앙 저장소를 공유한다.
- 변경 사항을 로컬에 저장할 로컬 저장소가 없기 때문에 대부분의 작업에 네트워크 액세스가 필요.
Git
- 중앙 집중식 서버를 사용하여 코드를 관리하는 대신,
개발자가 로컬에서 전체를 변경할 수 있도록 하는 중앙 저장소의 복제본인 로컬 저장소를 생성한다는 의미 의 분산 버전 제어 시스템이다.
로컬 리포지토리는 버전 기록에서 분기, 메타데이터에 이르기까지 모든 것으로 구성됨.
- 사용자가 GitHub에서 저장소를 복제(clone) 해온다.
다른 사용자와 공유하려면 코드 변경 사항을 "푸시(push)"하거나 원격 저장소와 동기화하려면 "풀(pull)"해야
하고, 이를 통해 여러 사용자가 중앙 리포지토리를 방해하지 않고 쉽게 공동 작업을 수행할 수 있다.
- Git은 대부분의 작업을 오프라인에서 사용할 수 있으므로 네트워크 액세스에 대한 의존도가 낮다.
사용자는 네트워크 액세스에 대해 걱정할 필요 없이 병합, 리베이스 및 분기를 수행할 수 있고,
네트워크는 사용자가 로컬 저장소를 중앙 저장소와 동기화해야 하는 경우에만 필요
2. 스냅샷 기능의 유무
- 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리.
- SVN은 변경점만 기억하고 처음 commit 시점부터 계산하여 올라가는 방식
- 커밋수가 많으면 많을수록 무거워진다.
- Git 은 변경점이 없어도 각 commit 시점 모든 버전을 사진 찍듯이 기억하고 있다.
- 커밋수가 많아도 일관된 속도로 빠르게 접근할 수 있다
3. 데이터의 무결성 보장 유무
SVN은 해시된 콘텐츠가 없으므로 네트워크 또는 디스크 오류가 발생한 경우 콘텐츠 무결성을 보장하지 않음.
Git은 모든 것은 저장되기 전에 SHA-1 해시 알고리즘을 사용하여 암호화된 체크섬을 통해 코드 내용의 견고성을 보장한다. Git이 알지 못하는 상태에서 코드의 내용을 변경하는 것은 사실상 불가능함.
Read more: Difference Between Git and Subversion | Difference Between http://www.differencebetween.net/technology/difference-between-git-and-subversion/#ixzz7XfJgxmTK