VCS (Version Control System)

Fox·2024년 2월 29일
0

업무를 진행하며 git에 대해 많이 모르고 있다 생각이 들었다
해당 이유로 git에 대해 추가적인 정리를 진행하는 도중 VCS도 함께 정리하면 좋겠다는 생각에 포스팅을 한다.

버전관리 시스템(Version Control System)이란?

버전관리 시스템(VCS, Version Control System)이란 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템을 의미한다.

VSC를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전상태로 되돌릴 수 있으며, 변경 사항을 비교하고, 변경한 사람 및 변경시기를 추적할 수 있다.

또한, 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.

로컬 VCS (Local VCS)

서버 없이 로컬 컴퓨터 내에서 버전을 관리한다. 간단한 데이터베이스만으로도 구현이 가능하므로 단순하고 개인적인 프로젝트에 적합하다.

단, 협업에서 쓰기에는 힘들고, 컴퓨터가 고장나는 등 내부 정보가 통째로 날아가버리면 복구할 방법이 없다.

대표적으로 RCS가 있다.
RCS(Revision Control System)는 주로 유닉스 기반 시스템에서 사용되는 로컬 버전 관리 시스템으로 각 파일의 변경 이력을 해당 파일이 위치한 디렉토리에 저장한다.


중앙집중식 VCS (CVCS)

서버에 최종본 한 벌이 있으며, 사용자들은 이 중 수정을 원하는 파일만 로컬에 받아 수정한 후 서버에 올리게 된다.

간단한 방법으로 협업이 가능하고 관리자가 누가 어떤 일을 하고 있는지 알기 쉬운 장점이 있다. 단, 중앙 서버가 다운될 경우 그동안은 업무가 마비되는 단점이 있다. 그리고 서버의 정보가 날아갈 경우 모든 히스토리가 날아가게 된다. 협업의 규모가 커지면 수정 충돌 문제 등이 발생할 수 있다.

대표적으로 SVN(Subversion)CVS(Concurrent Versions System)가 있다.

CVS(Concurrent Versions System):

  • CVS는 오래된 중앙집중식 버전 관리 시스템으로, 여러 사람이 동시에 작업할 수 있도록 지원한다.
  • 하지만 파일을 이동하거나 이름을 변경하는 경우 히스토리를 유지하지 못하는 등의 단점이 있다.

SVN(Subversion):

  • SVN은 CVS의 단점을 개선하여 만들어진 중앙집중식 버전 관리 시스템으로 원격 저장소를 통해 여러 사람이 동시에 협업할 수 있도록 지원한다.
  • 또한, 파일 이동 및 이름 변경에 대한 히스토리를 유지하는 등 CVS에서 불편하게 느껴진 부분들을 개선하였다.

분산 VCS (DVCS)

파일을 저장하는 서버가 있는 것은 동일하지만 수정을 위해 프로젝트 전체를 로컬에 다운 받은 뒤 수정한다.

중앙 서버가 다운되더라도 개별 사용자들은 작업이 가능하고 서버가 날아가도 다운 받은 내용은 남아있기 때문에 가장 안정적이다. 수정시에도 현재 코드는 나 혼자 수정하고 있기 때문에 충돌의 염려 없이 수정할 수 있으며, 최종적으로 서버에 올릴 때만 신경써서 머지(Merge)해주면 된다.

대표적으로 Git, Mercurial, Bazaar 등이 있다.

Git:

  • Git은 현재 가장 널리 사용되는 분산 버전 관리 시스템이다.
  • 빠른 속도, 효율적인 분산 작업, 데이터의 무결성 등을 중요하게 생각하는 사용자들에게 적합하며, GitHub와 같은 웹 기반 호스팅 서비스와의 통합이 용이하여 협업에도 적합하다.

Mercurial:

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글