Nice programing

CVS보다 SVN을 사용하면 어떤 이점이 있습니까?

nicepro 2020. 12. 11. 19:24
반응형

CVS보다 SVN을 사용하면 어떤 이점이 있습니까?


우리 회사는 소스 제어를위한 사실상의 표준으로 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

이제 이것은 그 프로젝트에 매우 구체적이지만 일반적으로 많은 것들이 많이 있습니다.

Pro Subversion :

  • 버전이 지정된 이름 변경 / 이동 지원 (CVS에서는 불가능) : Fingolfin, Ender
  • 기본적으로 디렉토리 지원 : 디렉토리를 제거 할 수 있으며 버전이 지정됩니다 : Fingolfin, Ender
  • 파일 속성은 버전이 지정됩니다. 더 이상 "실행 가능한 비트"지옥 : Fingolfin
  • 전체 개정 번호를 사용하면 빌드 버전 관리 및 회귀 테스트가 훨씬 쉬워집니다 : Ender, Fingolfin
  • 원자 커밋 : Fingolfin
  • 직관적 인 (디렉토리 기반) 분기 및 태깅 : Fingolfin
  • 더 쉬운 후크 스크립트 (커밋 전 / 후) : SumthinWicked (커밋 후 Doxygen에 사용)
  • 충돌하는 파일의 우발적 커밋 방지 : Salty-horse, Fingolfin
  • 사용자 지정 'diff'명령 지원 : Fingolfin
  • 오프라인 diff, 즉석 : sev

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

  • 더 빠릅니다
  • 바이너리 파일의 버전 관리 지원
  • 트랜잭션 커밋을 추가합니다 (모두 또는 전혀 없음).

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


나는 Eridius의 Git 제안을 두 번째로 할 것이지만 Mercurialbazaar 와 같은 다른 DRCS (Distributed Revision Control System)로 확장 할 것 입니다.

이 제품은 상당히 최신 제품이며 도구 및 통합 수준이 현재 낮은 것으로 보입니다 (초기 연구에 따르면). 나는 그들이 파워 개발자에게 가장 적합하다고 말하고 싶습니다 (그리고 여기 ;-)).

반면에 CVS가 현재 당신을 위해 해주지 않는 것은 무엇 입니까? 당신의 초기 질문에서 "CVS는 이것에 짜증이납니다. 대신 무엇을 사용할 수 있습니까?"라는 질문이 없습니다.

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


간과해서는 안되는 한 가지는 생태계입니다. 저는 CVSNT 상점에서 일하고 있었고 기본적으로 SubVersion을 지원하는 오픈 소스 도구가 점점 더 많아지고있었습니다.


btw : CVSNT는 원자 커밋을 지원합니다.


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

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

SVN 대신 Git을 살펴 봐야 합니다. 매우 빠르고 매우 강력한 DVCS입니다. 그것은 사용자 친화적 인 SVN처럼은 아니지만, 그 점에서 개선이고, 그것은 아니다 것을 열심히 배우고.


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


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


글쎄, 내가 느끼는 몇 가지가 svn을 멋지게 만듭니다.

  1. The SVN-Altassian crucible combination is a far superior method of reviews and quality checks
  2. Better management of conflicts and merges
  3. It's obviously faster for taking checkouts, performing commits, etc.
  4. The atomic commit problem - It is possible that 2 people committing together in CVS can conflict each other, losing some data and putting your code base in an inconsistent state

Migration can easily be done in a few hours using cvs2svn.

참고URL : https://stackoverflow.com/questions/1261/what-are-the-advantages-of-using-svn-over-cvs

반응형