본문 바로가기
Language & Tool/SVN

01 버전 관리의 이해 / SVN 소개 / SVN 주요 기능

by Orangetasteboy 2023. 7. 8.

형상 관리

소스 코드 버전 관리에서부터 소스 코드 변경 관리, 빌드와 릴리즈 관리를 포함하는 프로젝트 전반의 관리 방법을 체계적으로 정의하는 관리 방법

 

소프트웨어 소스 버전 관리를 좀 더 포괄적으로 확장시켜 만든 개념

 

 

버전 관리

프로젝트에서 생성되는 각종 소스, 문서, 실행 바이너리 등과 같은 파일들을 생성부터 소멸까지 체계적으로 관리하는 것

 

버전 관리에서의 버전

  • Subversion, CVS 같은 버전 관리 툴이 관리하는 버전
  • 파일의 생성, 수정, 소멸에 따라 변화하는 버전

 

변화하는 버전이 버전 관리 툴에서 관리하는 버전이고, 버전 관리 툴을 사용해 언제든지 이전 버전의 파일을 받아볼 수 있고, 변경 내역을 추적, 확인 가능

 

 

프로젝트 파일 버전 관리의 필요성

  • 잘못 수정한 내용을 이전 버전으로 되돌릴 수 있음.
  • 개발자 개개인이 따로 백업하지 않아도 됨.
  • 변경 내역을 추적, 확인하는 것이 가능해 파일의 변화 쉽게 파악 가능
  • 공동 개발 시 발생하는 파일 동기화 문제와 덮어쓰기 문제 쉽게 해결 가능
  • 릴리즈 파일 관리 및 릴리즈 파일의 패치 관리가 뒤섞이지 않고 체계적

 

 

중앙 집중형 버전 관리

중앙 집중형 버전 관리 시스템은 단일 서버를 가짐.

서버에 다수의 클라이언트가 접속하여 버전 관리를 필요로 하는 모든 파일들을 서버에서 체크아웃하는 형식으로 동작

 

 

중앙 집중형 버전 관리 시스템

CVS, Subversion(SVN), Perforce, ClearCase 등

내가 작업하고자 하는 파일 또는 프로젝트 버전만 서버에서 받아옴.

 

분산 버전 관리 시스템

Git, Mercurial, Bazaar 등

저장소 전체를 클라이언트에 다운로드

Git은 네트워크 없이도 버전 관리 시스템 사용 가능

 

 

Subversion(SVN)

2000년도에 CVS를 대체할 목적으로 개발

중앙 집중형 버전 관리 도구

 

 

Subversion을 활용한 개발 구조

  1. 중앙에 Subversion 서버가 있고 서버에 버전 관리할 프로젝트를 넣어둠.
  2. 개발자들은 서버에 접속해 프로젝트 파일을 자신의 PC로 가져옴.
  3. 가져온 프로젝트 파일에 새로운 내용을 추가하고 추가한 내용을 서버에 있는 프로젝트 파일에 반영
  4. 다른 개발자가 서버에서 프로젝트 파일을 바등면 새롭게 변경된 프로젝트 파일을 받아볼 수 있음.

 

 

SVN의 주요 기능

1. 디렉터리의 버전 관리

  • SVN은 시간과 함께 디렉터리 트리 전체 변경을 할 수 있는 가상 버전 관리 시스템 구현

 

2. 버전 이력 기능 강화

  • SVN에서는 파일과 디렉터리 모두에 대해서 추가, 삭제, 명칭 변경 가능
  • 신규 추가되는 모든 파일은 생성되는 시점으로부터 새롭게 시작되는 이력을 가짐.

 

3. Atomic Commit

  • 변경 사항 전체가 저장소에 완전하게 반영되어지거나, 전혀 반영되지 않을 수 있음.
  • 개발자는 논리적으로 한 묶음의 변경을 만들어 커밋(Commit)할 수 있어 일부만이 저장소에 반영되는 문제 발생 X

 

4. 메타 데이터 버전 관리

  • 파일과 디렉터리는 각각 관련한 속성키와 값의 조합이며 임의의 키, 값의 조합을 생성해 보존 가능
  • 속성도 파일의 내용과 동일하게 버전 관리 가능

 

5. 네트워크층의 선택

  • SVN은 저장소에 액세스용의 추상 레이어가 있어, 새로운 네트워크 프로그램 간단하게 구현 가능
  • SVN은 HTTP 서버의 확장 모듈로서 플러그인 될 수 있음.
  • 신뢰성이나 상호 호환성에 대해 매우 유리하여 서버가 제공하고 있는 기존의 기능(인증, 인가, 데이터 압축 등)을 곧바로 이용 가능
  • 비교적 간단하고 쉬운 단독 SVN 프로세스 이용 가능
    • 독자적인 프로토콜에 의해 Secure Shell(SSH)을 이용한 터널 통신을 간단하게 실행 가능

 

6. 데이터 처리의 일관성

  • SVN은 동일한 알고리즘을 사용해 파일의 변경 부분 표현
  • 텍스트(읽을 수 있는 데이터)에도, 바이너리(간단하게 읽을 수 없는 데이터)에 대해서도 같은 방법으로 동작

 

7. 효율적인 브랜치, 태그의 작성

  • SVN은 프로젝트를 복사하는 것으로 브랜치와 태그 생성

 

8. 확장 용이

  • SVN은 잘 설계된 API로 완성된 C의 공유 라이브러리의 모임으로 구현
  • 유지보수나 다른 애플리케이션이나 언어와 연동하여 사용 용이

'Language & Tool > SVN' 카테고리의 다른 글

03 SVN 개발 환경 구축 / VS Code와 SVN 연동 (Windows 환경)  (0) 2023.07.11
02 SVN의 이해  (0) 2023.07.08

댓글