문제

우리 회사는 소스 제어를 위한 사실상의 표준으로 CVS를 사용하고 있습니다.하지만 SVN이 더 좋다는 말을 많이 들었습니다.

SVN이 최신이라는 것은 알고 있지만 그 외에는 그 이점에 대해서는 잘 모르겠습니다.

내가 찾고 있는 것은 Java/Eclipse 개발 환경에서 각 시스템의 장단점을 지적하면서 두 시스템을 훌륭하고 간결하게 비교하는 것입니다.

도움이 되었습니까?

해결책

CVS는 파일별로 수정 사항만 추적하는 반면, SVN은 전체 커밋을 새 개정판으로 추적하므로 프로젝트 기록을 더 쉽게 추적할 수 있습니다.모든 최신 소스 제어 소프트웨어는 개정 개념을 사용하므로 CVS에서보다 SVN에서 마이그레이션하는 것이 훨씬 쉽다는 사실을 추가하세요.

원자적 커밋 문제도 있습니다.한 번만 경험했지만 CVS에서 두 사람이 함께 커밋하면 서로 충돌하여 일부 데이터가 손실되고 클라이언트가 일관성 없는 상태가 될 수 있습니다.조기에 발견되면 데이터가 아직 어딘가에 있기 때문에 이러한 문제는 심각하지 않지만 스트레스가 많은 환경에서는 고통이 될 수 있습니다.

그리고 마지막으로 CVS를 중심으로 개발된 도구는 더 이상 많지 않습니다.Git이나 Mercurial과 같은 새롭고 빛나는 도구에는 아직 도구가 부족하지만 SVN은 모든 시스템에서 상당히 큰 애플리케이션 기반을 보유하고 있습니다.

2015년 편집:진지하게, 이 답변은 이제 7년이 되었습니다.SVN은 잊어버리고 다른 사람들처럼 Git을 사용하세요!

다른 팁

많은 비교 중 하나:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

이제 이것은 해당 프로젝트에 매우 구체적이지만 일반적으로 많은 것들이 적용됩니다.

프로 서브버전:

  • 버전이 지정된 이름 바꾸기/이동 지원(CVS에서는 불가능):핑골핀, 엔더
  • 기본적으로 디렉터리를 지원합니다.제거할 수 있으며 버전이 지정됩니다.핑골핀, 엔더
  • 파일 속성에는 버전이 지정됩니다.더 이상 "실행 가능한 비트"가 없습니다.핀골핀
  • 전체 개정 번호를 사용하면 빌드 버전 관리 및 회귀 테스트가 훨씬 쉬워집니다.엔더, 핑골핀
  • 원자적 커밋:핀골핀
  • 직관적인(디렉토리 기반) 분기 및 태그 지정:핀골핀
  • 더 쉬운 후크 스크립트(커밋 전/후 등):SumthinWicked (커밋 후 Doxygen에 사용합니다)
  • 충돌하는 파일이 실수로 커밋되는 것을 방지합니다.짠말, 핑골핀
  • 사용자 정의 'diff' 명령 지원:핀골핀
  • 오프라인 diff는 즉시 이루어집니다.SEV

SVN은 CVS에 비해 3가지 주요 장점이 있습니다.

  • 더 빠르다
  • 바이너리 파일 버전 관리 지원
  • 트랜잭션 커밋을 추가합니다(전부 아니면 전무)

Subversion 책에는 부록 결정을 내리는 데 도움이 될 수 있는 CVS와의 중요한 차이점을 자세히 설명합니다.두 가지 접근 방식은 거의 동일한 아이디어이지만 SVN은 CVS의 오랜 결함을 수정하도록 특별히 설계되었으므로 적어도 이론적으로는 SVN이 항상 더 나은 선택이 될 것입니다.

나는 Git에 대한 Eridius의 제안을 두 번째로 따르지만 이를 다음과 같은 다른 DRCS(Distributed Revision Control System)로 확장하고 싶습니다. 수은제 그리고 바자.

이러한 제품은 상당히 최근 제품이며 도구 사용 및 통합 수준이 현재 낮은 것으로 보입니다(초기 조사에 따르면).나는 그것들이 저 밖의 전력 개발자들에게 가장 적합하다고 말하고 싶습니다(그리고 여기 ;-)).

반면에 무슨 그렇지 않다 CVS가 현재 당신을 위해 일하고 있습니까?초기 질문에서는 "CVS가 형편없네요. 대신 무엇을 사용할 수 있을까요?"라는 질문이 전혀 없습니다.

잠재적인 마이그레이션 비용과 이점을 비교 평가해야 합니다.기존 프로젝트의 경우 정당화하기 어려울 것이라고 생각합니다.

간과하지 말아야 할 것은 생태계다.나는 CVSNT 상점에서 일하고 있었고 기본적으로 SubVersion을 지원하는 오픈 소스 도구가 점점 더 많아지고 있다는 것을 알게 되었습니다.

그나저나:CVSNT는 원자성 커밋을 지원합니다.

CVS와 SVN 사이를 전환하는 도중에 있는 사람으로서(처음에는 모든 프로젝트를 cvs2svn으로 전환한 다음 새 프로젝트에서는 svn만 사용하여 전환하기로 결정했습니다) 여기에 우리가 겪은 몇 가지 문제가 있습니다.

  • 병합과 분기는 매우 다르며 자주 분기하고 병합하는 경우 서버에서 SVN 1.5를 실행하지 않는 한 분기한 시기를 알아야 합니다(Tortoise SVN 대화 상자에서는 명확하지 않습니다).Michael은 분기 및 병합이 직관적이라고 말합니다. CVS를 10년 동안 사용한 후에는 그렇지 않다고 생각합니다.
  • Linux에서 SVN 서버를 실행하는 경우 기본 설치 1.4.x로서 SA를 svn 1.5로 이동하는 것이 어려울 수 있습니다.
  • TortoiseSVN에서는 충돌 병합이 TortoiseCVS만큼 쉽거나 명확하지 않습니다(적어도 저와 제 동료에게는).세 개의 창 접근 방식은 익숙해지는 데 시간이 좀 걸리며 WinMerge(내가 선호하는 병합 도구)는 세 개의 창 병합을 수행하지 않습니다.
  • 주의하세요:내가 읽은 많은 온라인 튜토리얼과 잡지 기사는 분기 및 병합이 되지 않습니다. 기본 저장소를 다음과 같이 설정해야 합니다. https://svn.yoursvnserver.com/repos/YourProject/Trunk 그리고 가지 https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX .잘못된 위치에서 리포지토리를 시작하면 정리할 수 있지만 혼란을 야기합니다.

당신은 살펴 봐야합니다 힘내 SVN 대신.매우 빠르고 강력한 DVCS입니다.SVN만큼 사용자 친화적이지는 않지만 그 점에서는 개선되고 있으며 그렇지도 않습니다. 저것 배우기 어렵다.

CVS(동시 버전 시스템) 및 SVN(SubVersioN)은 단일 프로젝트에서 공동 작업하는 팀에서 널리 사용되는 두 가지 버전 제어 파일 시스템입니다.이러한 시스템을 통해 공동 작업자는 변경 사항을 추적하고 누가 무엇을 개발하고 있는지, 브랜치가 메인 트렁크에 적용되어야 하는지 여부를 알 수 있습니다.CVS는 둘 중 훨씬 오래된 것이며 많은 사람들을 위한 표준 협업 도구였습니다.SVN은 훨씬 더 최신 버전이며 대부분의 사람들의 요구 사항을 해결하기 위해 많은 개선 사항을 도입했습니다.

CVS의 최신 코드만 SVN으로 마이그레이션하고 현재 CVS 저장소를 동결하도록 선택할 수도 있습니다.이렇게 하면 마이그레이션이 더 쉬워지고 이전 CVS 저장소에서 레거시 릴리스를 빌드할 수도 있습니다.

글쎄, 내가 느끼는 몇 가지가 svn을 굉장하게 만든다고 생각합니다.

  1. SVN-Altassian 도가니 조합은 검토 및 품질 검사에 있어 훨씬 뛰어난 방법입니다.
  2. 충돌 및 병합에 대한 더 나은 관리
  3. 체크아웃, 커밋 수행 등의 작업이 확실히 더 빠릅니다.
  4. 원자성 커밋 문제 - CVS에서 두 사람이 함께 커밋하면 서로 충돌하여 일부 데이터가 손실되고 코드 기반이 일관되지 않은 상태가 될 수 있습니다.

cvs2svn을 사용하면 몇 시간 안에 쉽게 마이그레이션을 완료할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top