profile image

L o a d i n g . . .

버전 관리란? (VCS, Version Control System)

- 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템


버전 관리를 사용해야 하는 이유

- 각 파일을 이전 상태로 되돌릴 수 있음

- 프로젝트를 통째로 이전 상태로 되돌릴 수 있음

- 시간에 따라 수정 내용 비교 가능

- 누가 문제를 일으켰는지 추적 가능

- 누가, 언제 만들어낸 이슈인지 알 수 있음

- 파일을 잃어버리거나 잘못 고쳤을 때 쉽게 복구 가능


버전 관리 시스템의 종류

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

Local VCS

- 유명한 로컬 버전 관리 시스템으로는 RCS (Revision Control System)이 있음

- RCS는 파일에서 변경되는 부분 (Patch)만 기억해 용량 문제 해결

- RCS에서의 버전 변경은 해당 버전까지의 일련의 변화들 (Patch Set)을 적용/해제하는 식으로 동작함

- 단점으로는 이름 그대로 로컬에서만 동작하므로, 다른 개발자와 협업을 해야 하는 상황에서는 버전 관리가 힘듦


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

CVCS

- 파일 및 변경 이력 등을 서버로 옮긴 것

- 중앙의 서버가 파일들과 이들의 변경 이력을 관리하고, 각 클라이언트는 서버에 접속해서 특정 버전의 스냅샷(snapshot)을 받아서 사용하는 형태로 동작

- 클라이언트가 서버로부터 특정 버전의 스냅샷을 받아 사용하는 것을 체크아웃(checkout) 이라고 함

- 모두 누가, 무엇을 하고 있는지 알 수 있고, 관리자는 누가, 무엇을 할지 꼼꼼하게 관리 가능

- 단점은 아래와 같음

  • 모든 버전 관리 관련 동작은 서버에서 처리되어야 하므로 서버의 부하가 큼
  • 서버가 죽거나 장애가 발생하면 버전 관리가 이루어지지 않음
  • 오프라인 상태에서는 버전 관리 시스템을 사용할 수 없음
  • 모든 버전 관리 관련 동작은 적어도 한 번 서버를 경유해야 함, 로그를 보는 것조차 서버에서 데이터를 받아와야 해서 느림
  • 서버에서 데이터가 망가지거나 삭제되면 복구하기가 매우 어려움

분산식 버전 관리 시스템 (DVCS, Distributed Version Control System)

DVCS,

- 각 클라이언트들이 모두 서버의 백업본을 가지는 형태

- 서버가 죽거나 오프라인 상태에서도 버전 관리 가능

- 대부분의 버전 관리가 로컬에서 이루어지므로 속도 빠름

- 단점으로는 중앙 집중식 버전 관리에 비해 복잡하고, 동기화 문제가 있음

- Git, Mecurial, Bazzar 등이 있는데 가장 유명하고 널리 쓰이는 것이 Git


출처

1. https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

2. https://velog.io/@gil0127/%EC%9A%B0%EB%A6%AC%EB%8A%94-%EC%99%9C-Git%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80

3. https://heekangpark.github.io/git/vcs

복사했습니다!