Version Control Systems

Sam Kim·2022년 7월 5일
0

Version Control Systems

목록 보기
1/2
post-thumbnail

버전 관리란 무엇인지와 버전 관리 시스템의 종류와 각각 특징을 알아봅니다.

버전 관리 시스템(형상관리)

  • Configuration Management Systems
  • Version Control Systems

버전 관리

  • Source Data + History
    • 파일과 해당 파일의 이력을 관리
    • 협업, 작업 추적, 복구 등이 용이

등장 배경

버전 관리 시스템 등장 이전에는 버전 관리를 위해 파일을 복사하여 사본을 만드는 디렉토리 버전 관리(Directory Version Control) 방식을 사용했다. 이 방식은 아래와 같은 단점들로 인해 버전 관리 시스템이 필요하게 됐다.

  • 저장소의 손상이나 실수로 삭제하는 등 손실의 위험이 큼
  • 작업 중 오류 발생 시 원상태로 돌리기 어려움
  • 여러 사본 중 어디에 어떤 수정 사항이 있는지 구분이 어려움
  • 협업 시 동시 작업이 불가
  • 협업 시 누가 어느 부분을 수정했는지 작업 추적 불가

버전 관리 시스템의 종류

  • CVCS - CVS, SVN, etc.
  • DVCS - Mercurial, Git, etc.

Local Version Control Systems

Local VCS, Local Version Control Systems
로컬 버전 관리 시스템

  • 간단한 데이터베이스를 이용해 파일의 이력(변경 정보)를 관리하는 시스템

Revision Control System

RCS, Revision Control System
개정 관리 시스템

  • Local VCS의 하나로 파일에서 변경되는 부분(Patch)만 별도 저장
  • 버전에 따라 해당 버전까지의 변경 부분(Patch Set)을 적용하거나 해제하는 방식
  • 협업 시 관리가 어려움

Centralized Version Control Systems

CVCS, Centralized Version Control Systems
중앙 집중식 버전 관리 시스템

  • 파일 및 변경 이력 등을 서버에서 관리
  • 협업이 용이해짐
  • commit 하는 순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 commit)
  • 인터넷이 안되면 작업이 불가능
  • 중앙 서버에 문제 발생 시 작업 불가 혹은 이력 손실 가능성이 있음
  • 자신만의 version history를 가질 수 없음

Concurrent Versions Systems

CVS, Concurrent Versions Systems
동시 버전 시스템

  • CVCS의 하나로 1980년대 만들어진 형상관리 시스템
  • commit 중 오류 발생 시 Rollback 이 되지 않는 등의 단점
  • 이후 SVN 으로 대체됨

[위키백과 링크], [공식 홈페이지 링크]

Subversion

SVN, Subversion
자유 소프트웨어 버전 관리 시스템

  • CVCS의 하나로 2000년대 CVS를 대체하기 위해 개발됨
  • 현재까지도 사용 중
  • 중앙 버전 관리 시스템의 단점을 보완하여 현재까지도 사용 중

[위키백과 링크], [공식 홈페이지 링크]

Distributed Version Control Systems

DVCS, Distributed Version Control Systems
분산 버전 관리 시스템

  • 중앙 집중식 버전 관리 시스템의 단점을 보완하기 위해 개발됨
  • 각각의 로컬 PC에서 서버의 백업본을 가짐
    • 즉, 서버에 문제가 생기더라도 복구가 용이함
  • commit 하더라도 개인저장소 내에 적용됨 (다른 개발자에게 영향 없음)
  • 원하는 순간에 배포(Push) 가능
  • 중앙 서버에 접속하지 않은 오프라인에서도 작업 가능
  • 자신만의 version history를 가짐
  • 중앙 집중식 버전 관리 시스템에 비해 복잡하고 동기화에 어려움이 있음

Git

  • DVCS의 하나로 SVN 보다 빠른 속도와 많은 기능을 지원
  • 대다수의 기업에서 Git 사용 중
  • 소스코드의 교환 없이 동일 파일을 여러 사용자가 함께 작업하는 병렬 개발이 가능

0개의 댓글