CVS에서의 이주

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

CVSSVN과 유사한 오래된 중앙 집중식 버전 관리 시스템입니다.

CVS 대 Git

다음 디렉터리은 CVS와 Git의 주요 차이점을 보여줍니다:

  • Git은 분산형입니다. 반면에 CVS는 클라이언트-서버 아키텍처를 사용하여 중앙 집중식입니다. 이는 Git이 작업 영역이 전체 리포지터리의 사본인 덕분에 더 유연한 워크플로우를 갖고 있음을 의미합니다. 이는 분기를 전환하거나 Merge하는 경우에 오버헤드를 줄여줍니다. 왜냐하면 원격 서버와 통신할 필요가 없기 때문입니다.
  • 원자적 작업. Git에서 모든 작업은 원자적으로, 성공하거나 전혀 변경되지 않은 채로 실패합니다. CVS에서는 커밋(및 다른 작업)이 원자적이 아닙니다. 리포지터리에 대한 작업이 중간에 중단된 경우, 리포지터리는 일관성 없는 상태로 남을 수 있습니다.
  • 저장 방법. CVS의 변경 사항은 파일 단위(변경 세트)로 이루어지는 반면, Git에서는 커밋된 파일이 전체로 저장됩니다. 즉, Git에서는 전체 변경 사항을 쉽게 되돌릴 수 있습니다.
  • 리비전 ID. CVS에서 변경 사항이 파일 단위로 이루어지는 사실로 인해, 리비전 ID는 버전 번호에 의해 나타납니다. 예를 들어 1.4는 주어진 파일이 변경된 횟수를 나타냅니다. Git에서는 각 프로젝트 버전(각 커밋)이 SHA-1에 의해 고유한 이름을 가집니다.
  • Merge 추적. Git은 커밋하기 전에 Merge을 사용하는 반면 CVS는 Merge하기 전에 커밋하는 접근 방식을 사용합니다. 다른 개발자가 동일한 브랜치에서 새 커밋을 생성하고 중앙 리포지터리에 푸시하는동안 새 커밋을 생성하려고 준비 중이었다면, CVS는 커밋하기 전에 작업 디렉터리를 먼저 업데이트하고 충돌을 해결해야만 커밋할 수 있도록 강제합니다. 그러나 Git에서는 그렇지 않습니다. 먼저 커밋하여 버전 관리에 상태를 저장한 다음에 다른 개발자의 변경 사항을 Merge합니다. 또한, 다른 개발자에게 Merge과 충돌 해결을 요청할 수 있습니다.
  • 서명된 커밋. Git은 커밋에 서명을 지원하여 커밋이 실제로 원래 작성자로부터 온 것임을 확인할 수 있습니다. GitLab는 서명된 커밋이 올바르게 검증되었는지 보여줍니다.

위의 항목 중 일부는 이 훌륭한 Stack Overflow 게시물에서 가져왔습니다. 더 완전한 차이점 디렉터리은 다른 버전 관리 소프트웨어 비교에 대해 참고하세요.

왜 이주해야 하는가

CVS는 2008년 이후 새로운 릴리스가 없는 오래된 시스템입니다. Git은 (git bisect 예를 들면) 더 많은 도구를 제공하여 더 프로덕션적인 워크플로우를 가능하게 합니다. Git/GitLab로 이주하는 것은 여러분에게 다음과 같은 이점을 제공합니다:

  • 짧은 학습 곡선, Git은 큰 커뮤니티와 많은 튜토리얼로 시작할 수 있습니다(우리의 Git 주제를 참조하세요).
  • 현대적인 도구와의 통합, Git 및 GitLab으로 이주하면 내장된 버전 관리, 이슈 추적, 코드 리뷰, CI/CD 등을 갖춘 오픈 소스 엔드 투 엔드 소프트웨어 개발 플랫폼을 구축할 수 있습니다.
  • 많은 네트워크 프로토콜 지원, Git은 SSH, HTTP/HTTPS 및 rsync 등을 지원하며, CVS는 SSH와 자체 보안되지 않은 pserver 프로토콜에서 사용자 인증이 전혀 없는 것만 지원합니다.

이주하는 방법

이주를 시작하는 데 도움이 되는 몇 가지 링크는 다음과 같습니다: