Version
버전은 사전적 의미로 유의미한 수정을 뜻한다.
즉 기존의 것이 유의미한 수정(기능추가, 기능 수정 등)을 거쳐 변화됐다면 새로운 버전이라고 한다.
버전관리의 중요성
어떠한 프로젝트건 간에 수정사항은 항상 나타나기 마련이다.
여기서 수정 이전의 버전을 남겨두지 않은 채 그 위에 덮어쓰고, 덮어쓰는 식으로 진행할 수도 있지만,
그런 방식으로 진행했을 때 아래의 예시들에 마주하면 어떠할지 생각해보자.
- 수정 전의 프로젝트가 더 낫다고 판단될 때
- 수정을 거치며 삭제됐던 것들이 참고자료로 필요할 때
- 수정 이후 오류가 발생할 때
수정 전의 버전을 남겨놓지 않았다면, 하나같이 다 아찔해지는 상황들이다.
위의 예시들 외에도 버전관리의 중요성을 느끼게 해주는 크고 작은 문제들이 자주 나타나기도 하고, 나름 그 시점에는 완성본이라고 생각했던 버전이기에 관리는 필수적이다.
관리 시스템의 종류
Version Control System
버전관리가 이토록 중요하기에 이를 관리하는 시스템에는 크게 세가지가 있다.
- 로컬 VCS
- 중앙집중식 VCS
- 분산 VCS
이 3가지의 대략적인 의미와 차이에 대해서 알아보자.
1. 로컬 VCS
혼자 사용하는 버전 관리 시스템
개인의 컴퓨터에서 이전 버전들을 저장해가며 관리하는 방식이다. 그러므로 협업시에 사용하지 않는다.
2. 중앙집중식 VCS
중앙에 하나의 서버가 존재해 그 서버를 통해 버전을 관리하는 시스템
다수가 사용 가능하며 파일단위
로 접근하여 수정을 거치면서 버전을 관리하는 방식이다.
3. 분산 VCS
중앙에 하나의 서버가 존재해 그 서버를 통해 버전을 관리하는 시스템
이 또한 다수가 사용하는데 중앙집중식과 달리 버전단위
로 접근하여 관리하는 방식이다.
버전 단위로 접근하기때문에 중앙집중식보다 버전이 꼬일 가능성이 낮으며, 이로인해 관리 포인트도 줄어든다.
참고
- 중앙집중식 VCS 대표적인 시스템
- SVN
- CVS
- 분산 VCS 대표적인 시스템
- Git
- Mecurial
- Bazaar