답변:
즉, 버전 제어 시스템에 커밋을 수행 할 때 커밋하려는 모든 항목이 들어가거나 아무 것도 수행하지 않습니다.
CVS에서 커밋을 시도하면 커밋이 여러 파일에서 성공한 다음 변경되어 다른 여러 파일에서 실패 할 수 있습니다. 커밋의 절반이 없기 때문에 저장소가 불행한 상태로 유지됩니다. 컴파일이 나쁘거나 나 빠지지 않은 상태로 두었을 가능성이 있습니다. 이제 다른 변경 사항을 업데이트하고 다른 변경 사항을 가져 오기 전에 다른 파일을 커밋 할 수 있도록 변경 사항을 신속하게 통합해야합니다.
SVN에서는 이런 일이 발생하지 않습니다. SVN은 변경 한 모든 것을 커밋하거나 전체 변경 세트에 실패합니다. 따라서 커밋 문제로 인해 저장소를 깨진 상태로 두지 않습니다.
이것은 Bye-bye CVS 에서 설명 됩니다. Andy Lester가 쓴 기사를 전복했습니다 .
Subversion에서 커밋을 시도했지만 파일 중 하나가 충돌하거나 오래된 경우 파일이 커밋되지 않습니다. CVS에는 지금 당장 수정해야 할 반 커밋 된 파일 세트가 있습니다.
CVS가 프로그래머가 병합을 즉시 수정하도록 강제한다는 사실은 반 생산적입니다. 이에 비해 변경 사항을 지연 / 취소 / 신중하게 병합하는 옵션은 실질적인 이점입니다.
위 기사에서 설명한 CVS에 비해 SVN의 다른 이점은 다음과 같습니다.
수행하는 모든 작업의 로컬 버전
diff를 cvs하려면 리포지토리에 연결할 수 있어야합니다. 그물 연결 없음, 확산 없음. Subversion은 작업중 인 내용의 로컬 사본을 저장하므로 svn diff는 정상적으로 작동합니다. 다시 시작하고 싶습니까? svn revert도 연결되지 않은 상태로 작동합니다.개정의 상징적 이름
HEAD는 CVS의 트렁크 팁 이름이지만 PVCS 시절에 되돌아 갈 수있는 것처럼 항상“-r-1”을 말하고 싶었습니다. CVS를 사용하면 편집중인 항목에 cvs 로그를 작성한 다음 빼야합니다. 재미 없어 Subversion을 사용하면 svn diff -r PREV라고 말할 수 있습니다.실제 상태보고
CVS에서 서버의 어떤 것이 더 최신인지 확인할 수있는 유일한 방법은 cvs 업데이트이며 다운 된 내용이 충돌을 일으키지 않기를 바랍니다. svn status 명령을 사용하면 실제 상태가되므로 업데이트를 수행하기 전에 충돌이 있는지 확인할 수 있습니다.병합 충돌의 유용한 처리
CVS에서 충돌 이있는 경우 파일에 충돌 마커가 나타납니다. Subversion에서는 충돌 표시기 (원래 사전 충돌 파일의 사본)와 서버에서 내려온 버전 및 원래 편집했던 버전을 얻게됩니다. 그런 다음 filename.txt를 명시 적으로 svn resolve하여 Subversion에 문제가 해결되었음을 알려야합니다. 더 이상 충돌 마커가있는 CVS에 실수로 다시 커밋하지 않아도됩니다.