버전 관리/SVN

00. SVN 개념

코딩 펭귄 2022. 2. 22. 15:19

SVN(Subversion)

SVN은 여러 명이서 작업하는 프로젝트의 버전 관리나 각자 만즌 소스의 통합과 같은 문제를 해결하기 위해 저장소를 만들어 그곳에 소스를 저장하여 소스 중복이나 여러 가지 발생 가능한 문제를 해결하기 위한 형상관리 툴입니다.

 

형상 관리 : 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것

 

SVN 사용 목적

SVN 사용 목적은 아래와 같습니다.

  • Revision 별로 파일 백업
  • 소스코드 및 디렉토리 버전 관리
  • 프로젝트 협엽 지원
  • 작업 이력 관리
  • 서버와 클라이언트 양방향 데이터 전송으로 네트워크 소통량 최소화

 

SVN 작동 방식

프로젝트 소스는 SVN 서버의 Trunk라는 곳에 위치하게 되고, 자신의 로컬에 Trunk의 소스를 다운받아(update) 수정/추가 후 다시 업로드(commit)하는 방식으로 진행됩니다.

 

SVN 용어

  • Repository : 프로젝트 파일 및 변경 정보가 저장되는 장소로 모든 프로젝트의 프로그램 소스들이 저장됩니다.
  • Trunk : 프로젝트에서 중심이 되는 디렉토리로 소스를 Commit 했을 때 개발 소스가 모이는 장소입니다. 따라서 모든 개발 작업은 해당 디렉토리에서 이루어집니다.
  • Branch : trunk에서 분리/복사한 코드로 버전 별 배포판을 생성하거나, trunk와 별도로 운영 환경을 설정하려고 하는 경우 안정화된 소스 관리 목적으로 사용됩니다.
  • Tag : 특정 시점의 상태 보존을 목적으로 버전 별로 소스코드를 따로 저장하는 공간입니다.
  • Revision : 수정된 버전이라는 의미로, 클라이언트가 Repository에 새로운 파일, 수정 등을 commit 할 때마다 번호가 하나씩 증가합니다.
  • Head : 가장 최근에 commit된 revision을 의미합니다.
  • Base : 클라이언트가 checkout, update 등의 명령을 통해 Repository로부터 내려받은 revision을 의미합니다. 해당 revision으로 수정 및 commit을 하게 됩니다. 이때 만약 Head와 Base가 다른 경우에는 update를 먼저 수행해야 commit이 가능해집니다. 

 

SVN과 GIT의 차이

  GIT SVN
관리 스타일 분산관리식 중앙집중관리식
특징 개발자가 자신만의 Commit History를 가질 수 있어 개발자 저장소와 서버 저장소를 독립적으로 관리 가능 개발자가 자신만의 Commit History를 가질 수 없어 Commit한 내용에 실수가 있을 시 다른 개발자에게 바로 영향을 미침