CVS에서 Git으로 마이그레이션
CVS는 SVN과 유사한 오래된 중앙 집중식 버전 관리 시스템입니다.
CVS vs Git
다음 목록은 CVS와 Git 간의 주요 차이점을 설명합니다:
-
Git은 분산형입니다. 반면에 CVS는 클라이언트-서버 아키텍처를 사용하는 중앙 집중식입니다. 이는 Git이 전체 레포지토리의 복사본을 작업 영역으로 두기 때문에 더 유연한 워크플로를 갖게 됨을 의미합니다. 이로 인해 브랜치를 전환하거나 병합할 때 원격 서버와 통신할 필요가 없으므로 오버헤드가 줄어듭니다.
-
원자적 작업. Git에서는 모든 작업이 원자적입니다. 즉, 전체가 성공하거나 실패하여 아무런 변경 없이 종료됩니다. CVS에서는 커밋(및 기타 작업)이 원자적이지 않습니다. 레포지토리의 작업이 중간에 중단되면, 레포지토리가 일관되지 않은 상태로 남을 수 있습니다.
-
저장 방법. CVS의 변경 사항은 파일별로(변경 세트) 관리되지만, Git에서는 커밋된 파일이 전체적으로(스냅샷) 저장됩니다. 이는 Git에서 전체 변경 사항을 쉽게 되돌리거나 취소할 수 있음을 의미합니다.
-
리비전 ID. CVS에서 변경 사항이 파일별로 관리되기 때문에 리비전 ID는 버전 번호로 표시됩니다. 예를 들어
1.4
는 특정 파일이 몇 번 변경되었는지를 반영합니다. Git에서는 프로젝트의 각 버전(각 커밋)이 SHA-1로 주어진 고유한 이름을 가집니다. -
병합 추적. Git은 CVS처럼 병합 전 커밋(또는 업데이트 후 커밋) 접근 방식을 사용하지 않고 커밋 전 병합 접근 방식을 사용합니다. 새로운 커밋을 준비하는 중에 동일한 브랜치에서 누군가가 새로운 커밋을 생성하고 중앙 레포지토리에 푸시하면, CVS는 먼저 작업 디렉토리를 업데이트하고 충돌을 해결한 다음 커밋할 수 있도록 강제합니다. 하지만 Git에서는 먼저 커밋한 다음 버전 관리에서 현재 상태를 저장하고 다른 개발자의 변경 사항을 병합합니다. 다른 개발자에게 병합과 충돌 해결을 요청할 수도 있습니다.
-
서명된 커밋. 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
프로토콜만 지원합니다.
마이그레이션하는 방법
마이그레이션을 시작하는 데 도움이 되는 몇 가지 링크가 있습니다: