본문 바로가기
Software/Open Source

[GIT] 버전관리시스템(Version Control System, VCS)

by 리미와감자 2023. 11. 19.

버전관리시스템(Version Control System, VCS)


 

■ 버전관리시스템(Version Control System, VCS)이란?

 

변경관리(Change Management)

소프트웨어의 소스 코드의 변경사항을 관리.

 

버전관리(Version Management)

소프트웨어의 소스 코드의 변경사항을 Version이라는 개념으로 관리. 형상 관리보다 좁은 개념으로 소스 코드만을 관리하는 시스템을 말한다.

 
형상관리(Configuration Management)

소프트웨어의 소스 코드 변경사항 관리를 포함하여 프로젝트의 진행사항, 빌드, 릴리즈, 퍼블리싱까지 관리 가능한 통합 시스템


 

 

 

■ 포함관계: 변경관리 <= 버전관리 <= 형상관리

 

개념적으로는 분류가 되지만, 실무적으로는 모두 비슷한 의미로 사용된다.

 

 


버전관리를 하는 이유

1) 무언가 잘못되었을 때 복구를 돕기 위하여
2) 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
3) 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위하여
4) 소스 코드의 변경 사항을 추적하기 위하여
5) 소스 코드에서 누가 수정했는지 추적하기 위하여
6) 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
7) 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
8) 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
9) 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
10) 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여

 


 

버전관리시스템 종류

1) 복사본을 이용한 버전 관리

 

복사본을 이용한 버전 관리

 

  • 파일의 버전 이력을 알기 어려움.
  • 용량을 많이 차지하고 느림.
  • 파일을 삭제하거나 덮어씌우는 등 실수 확률이 높음.

 

2) 로컬 버전관리(Local VCS)
로컬 버전관리, Ref: https://git-scm.com/
  • 서버 없이 로컬 컴퓨터 내에서 버전 관리를 하는 방식.
  • 간단한 DB만으로도 구현이 가능하기 때문에 단순하고 개인적인 프로젝트에 적합.
  • 로컬에서 버전 관리를 하여 협업이 어려움.
  • Ex) RCS(Revision Control System)

 

3) 중앙집중식 버전관리(Centralized VCS)
중앙집중식 버전관리, Ref: https://git-scm.com/
  • 다른 개발자와 협업하는 경우에 사용.
  • 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)하는 방식.
  • 중앙 서버가 문제가 생기면 모든 프로젝트의 히스토리를 잃을 수 있음.
  • Ex) CVS, Subversion(SVN), Perforce

 

4) 분산 버전관리(Distributed VCS)
분산 버전관리, Ref: https://git-scm.com/
  • 단순히 파일의 마지막 스냅샷을 Checkout하지 않고, 저장소를 히스토리와 함께 전부 복제. 사용자가 모든 버전에 대한 히스토리를 알고 있음.
  • Ex) Git, Mecurial, Bazaar, Darcs

 


 

 

SVN vs. GIT

SVN vs. GIT

 

1) SVN
  • 중앙집중식 버전관리
  • 중앙 서버에 소스코드 및 히스토리를 저장.
  • 개발자가 자신만의 저장소를 가질 수 없음.
  • commit한 내용에 실수가 있을 경우, 서버 및 다른 개발자에게 영향을 줌.
  • 사용법이 간단하여 배우기에 오래 걸리지 않음.
2) GIT
  • 분산 버전관리
  • 중앙 서버 및 로컬 저장소에 소스코드 및 히스토리를 저장. 중앙 서버와 로컬 저장소는 독립적.
  • 개발자가 자신만의 저장소를 가질 수 있음
  • commit한 내용에 실수가 있어도, 서버에 바로 영향을 주지 않음.
  • 사용법이 보다 어려우며, 익숙해지는 데 시간이 걸림.

■ VCS Trend Graph

Ref: https://rhodecode.com/
Ref:&nbsp;https://www.grandviewresearch.com/industry-analysis/version-control-system-market

'Software > Open Source' 카테고리의 다른 글

[GIT] GIT 저장소에 파일 저장하기  (0) 2024.01.02
[GIT] GIT에서 특정 파일/폴더 배제하기  (0) 2023.12.21
[GIT] GIT Setup  (0) 2023.12.20
[GIT] GIT 기초  (0) 2023.12.14
[GIT] GIT 설치  (0) 2023.12.11

댓글