01 버전 관리
버전 관리 시스템 (형상 관리)
- Configuration Management Systems
- Version Control Systems
버전 관리를 하는 이유
: 프로그램을 짜게 되면 소스 데이터가 나오게 된다. 예를 들어 파이썬으로 코드를 짜게 되면 .py 파일들(Source Data)이 쌓이게 되고 작업하면서 늘어나고 수정된다.(History/이력)
- Source Data + History
- 협업, 작업추적, 복구 등이 가능
Git 등장 배경
- 오래전: source folder + 실행파일을 버전별로 카피하여 관리. 종일 개발한 코드가 컴퓨터가 다운되면서 날아가버리기도.
Local Version Control Systems
- 내 컴퓨터에서 버전 관리 가능 -> 내 컴퓨터 하드가 날아가면 전체 코드 사라짐
- 버전은 관리가 되지만, 협업은 여전히 어려움
Centralized Version Control Systems
- 협업이 가능해짐
- commit 하는순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 commit)
- 인터넷이 안되면 작업 불가능
- 자신만의 version history를 가질 수 없음
Distributed Version Control Systems
- commit 하더라도 개인저장소 내에 적용됨 (다른 개발자에게 영향 없음)
- 원하는 순간에 배포(Push) 가능
- 오프라인에서도 작업 가능
- 자신만의 version history를 가짐
버전 관리 시스템의 종류
- CVS: CVS, SVN etc
- DVCS:Mercurial, Git etc
CVS
- 1980년대 만들어진 형상관리 시스템
- commit 중 오류 발생 시 Rollback이 되지않는 등의 문제
- 이후 SVN 으로 대체됨
SVN
Git
Git 기반의 서비스
Github
Gitlab
- https://gitlab.com
- 설치형 버전관리 시스템 - 소스코드 보안이 중요한 기업에서 주로 사용
- 클라우드 버전 관리 시스템 - 10명 이하 무료(Github와유사)
- Issue tracker, Git Remote Repository, API, Team, Group 기능 제공