CVS에서 이주하기

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

CVS는 오래된 중앙 집중식 버전 관리 시스템으로 SVN과 유사합니다.

CVS 대 Git

다음 목록은 CVS와 Git의 주요 차이점을 보여줍니다:

  • Git은 분산형입니다. 반면에 CVS는 클라이언트-서버 아키텍처를 이용하여 중앙 집중식입니다. 이는 Git이 전체 저장소의 복사본에서 작업하기 때문에 더 유연한 워크플로우를 가지고 있다는 것을 의미합니다. 이로써 브랜치를 전환하거나 병합할 때 오버헤드가 감소합니다. 왜냐하면 원격 서버와 통신해야 하는 일이 없기 때문입니다.
  • 원자적인(Atomic) 작업. Git에서 모든 작업은 원자적입니다. 즉, 성공하거나 실패할 때 변경 사항이 전혀 없이 일괄적으로 실행됩니다. CVS에서는 커밋(및 다른 작업)이 원자적이지 않습니다. 저장소에서 작업 중에 작업이 중단되면 저장소는 일관성 없는 상태로 남을 수 있습니다.
  • 저장 방법. CVS에서 변경 사항은 파일 단위(변경 세트)로 이루어지지만, Git에서는 커밋된 파일이 전체로(스냅숏) 저장됩니다. 이는 Git에서 전체 변경 사항을 아주 쉽게 되돌리거나 취소할 수 있다는 것을 의미합니다.
  • 리비전 ID. CVS에서 변경 사항이 파일 단위로 이루어지기 때문에 리비전 ID는 버전 번호에 의해 표시됩니다. 예를 들어, 1.4는 특정 파일이 몇 번 변경되었는지를 나타냅니다. Git에서는 프로젝트 전체의 각 버전(각 커밋)은 SHA-1로 지정된 고유한 이름을 가지고 있습니다.
  • 병합 추적. Git은 커밋 전에 병합하는 접근 방식을 사용하며, 이는 CVS의 병합 전-커밋(또는 업데이트-커밋)과는 다릅니다. 만약 새로운 커밋을 생성하려고 할 때(새 리비전), 동일한 브랜치에서 다른 개발자가 새 커밋을 만들고 중앙 저장소에 푸시했다면, CVS는 새로운 커밋을 허용하기 전에 작업 디렉토리를 먼저 업데이트하고 충돌을 해결해야 합니다. 하지만 Git에서는 이렇지 않습니다. 먼저 커밋하여 상태를 버전 관리한 후, 다른 개발자의 변경 사항을 병합합니다. 또한, 다른 개발자에게 병합을 하고 충돌을 스스로 해결하도록 요청할 수도 있습니다.
  • 서명된 커밋. Git은 커밋에 서명하는 것을 지원하여 추가적인 보안 및 커밋이 원래 저자로부터 실제로 왔는지 확인할 수 있습니다. GitLab은 서명된 커밋이 올바르게 검증됐는지 표시합니다.

위의 몇 가지 항목은 이 훌륭한 Stack Overflow 게시물에서 가져왔습니다. 더 완전한 차이점 목록은 다른 버전 관리 소프트웨어 비교에 있는 Wikipedia 문서를 참조하십시오.

왜 이주해야 하나요

CVS는 2008년 이후 새로운 릴리스가 없는 구식 시스템입니다. Git은 더욱 생산적인 워크플로우를 위해 (git bisect와 같은) 더 많은 도구를 제공합니다. Git/GitLab로의 이주는 다음과 같은 이점을 제공합니다:

  • 짧은 학습 커브, Git은 방대한 커뮤니티와 수많은 튜토리얼을 제공하여 시작하는 데 도움이 됩니다 (우리의 Git 토픽을 참조하세요).
  • 현대적인 도구와 통합, Git과 GitLab으로 이주하면 내장된 버전 관리, 이슈 추적, 코드 검토, CI/CD 등을 갖춘 오픈 소스 엔드 투 엔드 소프트웨어 개발 플랫폼을 사용할 수 있습니다.
  • 많은 네트워크 프로토콜 지원, Git은 SSH, HTTP/HTTPS, rsync 등을 지원하지만, CVS는 SSH와 사용자 인증이 없는 pserver 프로토콜만 지원합니다.

어떻게 이주할까요

이주를 시작하는 데 도움이 될 몇 가지 링크입니다: