
버전관리 시스템(형상관리)
버전관리
과거 작업 방법
Source Folder + 실행파일을 버전별로 카피하여 관리
하루종일 개발한 코드가 컴퓨터가 다운 되면서 날아감 등의 문제점 발생
-> 파일 버전 관리의 필요성을 느낌
Local Version Control Systems
내 컴퓨터에서 버전 관리 가능 → 내 컴퓨터 하드가 날아가면 전체 코드 사라짐
버전은 관리되지만, 협업은 여전히 어려움
-> 중앙 관리 시스템 도입 필요성을 느낌

Centralized Version Control Systems
협업이 가능해짐
commit 하는 순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 commit)
인터넷이 안되면 작업이 불가능
자신만의 version history를 가질 수 없음

Distributed Version Control Systems
commit 하더라도 개인저장소 내에 적용됨 (다른 개발자에게 영향 없음)
원하는 순간에 배포(Push) 가능
오프라인에서도 작업 가능
자신만의 version history를 가짐

버전관리 시스템의 종류
CVCS - CVS, SVN, etc.,
DVCS - Mercurial, Git, etc.,
CVS
1980년대 만들어진 형상관리 시스템
commit 중 오류 발생 시 Rollback 이 되지 않는 등의 문제
이후 SVN 으로 대체됨
SVN
2000년대 만들어졌고, 현재까지 두루 사용 중
Git
SVN 보다 빠른 속도와 많은 기능을 지원
현재 많은 기업이 사용 중
Github
Git 을 호스팅 해주는 웹 서비스, 협업을 위한 기능을 제공
참고 - 소스코드 보안이 중요한 경우 사용을 기피함
Gitlab
설치형 버전관리 시스템 - 소스코드 보안이 중요한 기업에서 주로 사용
클라우드 버전 관리 시스템 - 10명 이하 무료 (Github 와 유사)
Issue tracker, Git Remote Repository, API, Team, Group 기능 제공