기본 구조
SVN
중앙 집중식 버전 관리 시스템, 중앙 서버에서 전체 코드 및 변경이력을 저장한다.
SVN은 저장소에 중앙 서버가 있고, commit 할 시에 코드가 중앙 서버로 전달된다. 그래서 인터넷이 안되는 환경이나 중앙 서버에 문제가 발생한 경우에는 협업이 불가능하다.
Git
분산 버전 관리 시스템, 분산 구조를 사용하여 각 개발자의 로컬 저장소에 전체 코드 및 변경이력이 저장된다.
Git은 각 클라이언트가 모두 저장소를 가진다. 개발자들은 로컬 저장소에서 작업하고, 변경사항을 원격 저장소와 동기화 한다. 즉, 인터넷 연결이 불안정하고 중앙 서버에 문제가 생기더라도 작업을 계속 할 수 있다.
브랜치 관리, 저장소
SVN
SVN은 파일의 변화(차이점)를 저장한다. 브랜치를 새로 만들 경우, SVN은 전체 파일을 네트워크를 통해 통째로 내려받아 복사한다. 따라서 브랜치를 생성할 때마다 새로운 파일이 추가되며, 저장소의 용량이 증가한다.
Git
Git은 그 순간을 스냅샷(Snap shot)으로 저장한다. Git은 가장 가까운 스냅샷만으로 특정 버전을 빠르게 만들 수 있다.
브랜치를 만들 때 기존의 커밋 히스토리를 참조하는 방식을 사용한다 따라서 브랜치를 생성해도 새로운 파일이 추가되지 않으며, 저장소의 용량이 증가하지 않는다.
또한 브랜치를 이용한 병렬 개발이 쉽다. 브랜치간의 병합도 쉽고 빨라서 여러 개발자가 동시에 작업을 수행 시 효율적이다.
SVN은 커밋할 때 모든 변경사항이 커밋 대상이 된다. 하지만 Git은 커밋할 파일들만 Staging area에 추가한 후 로컬 저장소로 커밋한다.
'공부 etc.' 카테고리의 다른 글
[Mybatis] <choose>, <when>, <otherwise> 그리고 <if> (0) | 2023.05.09 |
---|---|
[AWS] Bastion 과 NAT Gateway (0) | 2023.05.08 |
[23.04.27] REST API (0) | 2023.04.27 |
[Cloud] 컨테이너, 도커, 쿠버네티스(k8s) (0) | 2023.04.05 |
[Java] final에 관하여 (0) | 2023.02.25 |