Version Control

소프트웨어가 개선될 때마다 버전을 매겨 이를 관리하는 것을 의미한다. 만약 최신 버전이 문제가 생겼을 때 이전 버전으로 돌아갈 수도 있다. 기존에는 usb,이메일을 통해 소프트웨어에 필요한 자료들을 공유하는데 이는 문제가 발생할 수 있다.

Centralized VC vs Distributed VC

Untitled

중앙집중형 버전컨트롤 : 저장된자료를 모두 카피해서 가져온 뒤 작업을 하는 형태로 자원이 많이 필요할 경우 문제가 발생한다. 중앙 집중형에 문제 발생시 모든 자료에 문제가 발생된다

Version Control System 과정

Untitled

새로운 기능을 추가하려할 때마다 branch off를 해 브랜치를 만드는 것을 확인할 수 있다. 만약 기능이 main작업에 들어가도 될 정도로 의미가 있다면 main에 merge할 수 있다. 출시할정도가 되면 tag를 매긴다. 이때 freeze로 개발을 중단할 수 있다.

Concurrent Versions System(CVS)

동시다발적으로 이뤄지는 버전 컨트롤 시스템으로 깃 이전에 등장한 버전 컨트롤 시스템

Apache Subversion (SVN)

cvs에서 파생된 중앙집중형 버전 컨트롤 시스템이다.

Git

git은 분산형 버전 컨트롤 시스템으로 작고 빠르다는 장점이 있다.

분산형인 경우에는 pull requests를 보내 pull하는 것을 요청하여 이를 동기화하는 과정이 있다. pull request를 한다면 1대1이 아니라 여러 리뷰어가 존재해 해당 코드에 관해 리뷰를 남긴다.

Untitled