풀데브코스

협업 환경 구성_버전관리

woody-j 2024. 2. 27. 19:34

1. 버전

1) 버전이란?

유의미한 수정 : 기능 추가,수정,삭제 등

2. 버전 관리 시스템의 정의 및 종류

  Version Sontrol System 

1) 정의

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

 

2) 종류

(1) 로컬 버전 관리 시스템 (Local VSC)

내 컴퓨터 안에서만, 협업은 불가능

많이 쓰는 VCS 도구 중에 RCS(Revision Control System)라고 부르는 것이 있는데 오늘날까지도 아직 많은 회사가 사용하고 있다. RCS는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다.
이 Patch Set은 특별한 형식의 파일로 저장한다. 그리고 일련의 Patch Set을 적용해서 모든 파일을 특정 시점으로 되돌릴 수 있다.

단점 :
로컬 데이터베이스에 문제가 발생할 경우 버전 관리 내역의 유지보수가 힘들어진다.
협업을 위해서 해당 방식을 이용할 수 없다.

(2) 중앙집중식 버전 관리 시스템 (CVCS, Centralized VSC)

 CVS, Subversion, Perforce 
모두 누가 무엇을 하고 있는지 알 수 있다. 관리자는 누가 무엇을 할지 꼼꼼하게 관리할 수 있다.
모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다.

단점 :
가장 대표적인 것이 중앙 서버에 발생한 문제다. 만약 서버가 한 시간 동안 다운되면 그동안 아무도 다른 사람과 협업할 수 없고 사람들이 하는 일을 백업할 방법도 없다. 그리고 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는다

(3) 분산 버전 관리 시스템 (DVCS, Distributed VSC)

Git, Mecurial, Bazaar, Darcs 

단순히 파일의 마지막 스냅샷을 Checkout 하지 않는다. 그냥 저장소를 히스토리와 더불어 전부 복제한다.
서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. Clone은 모든 데이터를 가진 진정한 백업이다.

게다가 대부분의 DVCS 환경에서는 리모트 저장소가 존재한다. 리모트 저장소가 많을 수도 있다. 그래서 사람들은 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다. 계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로를 다양하게 사용할 수 있다.

 

2. 버전 관리의 중요성

  • 원하는 버전 상태로 자유롭게 움직일 수 있다.
  • 작업물의 변경 이력을 관리할 수 있다.
  • 버전에 따라 수정 내용을 비교할 수 있다.
  • 누가 문제를 일으켰는지 추적이 가능하다.
  • 파일을 잃어버리거나 잘못 고쳤을 경우에도 쉽게 복구가 가능하다.
  • 예상하지 못한 문제가 발생 시 빠르게 대처 가능하다.

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

 

Git - 버전 관리란?

1.1 시작하기 - 버전 관리란? 이 장에서 설명하는 것은 Git을 처음 접하는 사람에게 필요한 내용이다. 먼저 버전 관리 도구에 대한 이해와 Git을 설치하는 방법을 설명하고 마지막으로 Git 서버를 설

git-scm.com

https://velog.io/@dev_2dong/%EB%B2%84%EC%A0%84%EA%B4%80%EB%A6%AC%EB%A5%BC-%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0-%EB%B0%8F-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EC%8B%9C%EC%8A%A4%ED%85%9C