2008년 11월 12일 수요일

Subversion(SVN)과 CVS의 비교

Subversion(SVN)과 CVS에 대한 비교라기 보다는 SVN이 CVS와 비교하여 상대적으로 어떤 점이 더 좋은지에 대한 설명입니다.
SVN은 CVS를 개발하던 핵심 개발자들이 그동안 CVS가 가지고 있던 문제를 해결하고자 완전히 새로운 아키텍쳐로 새로 만든 제품입니다.
따라서 기존에 CVS를 사용하고 있던 개발자들은 SVN으로 넘어오는 것을 적극 검토해보시기 바랍니다.


Subversion(SVN)의 장점
  • CVS에 비해 엄청나게 빠른 업데이트/브랜칭/태깅 시간. -> 최고로 강력한 장점입니다. 
    기존에 대형 프로젝트 같은 경우는 CVS를 이용하면 태깅에 수십분이 걸리기도 했습니다. 하지만 SVN은 아무리 규모가 커도 몇초면 끝납니다.
  • 커밋 단위가 파일이 아니라 체인지셋이라는 점입니다. CVS에서라면 여러 개의 파일을 한꺼번에 커밋하더라도 각각의 파일마다. 리비전이 따로 붙습니다. 반면 Subversion에서는 파일별 리비전이 없고 한번 커밋할 때마다 변경 사항별로 리비전이 하나씩 증가합니다. 
  • CVS와 거의 동일한 사용법. CVS 사용자라면 누구나 어려움 없이 금방 배울 수 있습니다. 
    또한 CVS를 SVN으로 쉽게 Migration을 할 수 있어 원하는 사람은 쉽게 SVN으로 옮겨 올 수 있습니다.
  • 원자적(atomic) 커밋. CVS에서는 여러 파일을 커밋하다가 어느 한 파일에서 커밋이 실패했을 경우 앞의 파일만 커밋이 적용되고 뒤의 파일들은 그대로 남아있게 됩니다. Subversion은 여러개의 파일을 커밋하더라도 커밋이 실패하면 모두 이전 상태로 되돌아 갑니다. 
  • 양방향 데이터 전송으로 네트워크 소통량(트래픽) 최소화. 
    네트워크 상황이 열악한 외부에서도 SVN을 사용하면 협업에 문제가 없습니다.
  • 트리별, 파일별 접근 제어 리스트. 저장소 쓰기 접근을 가진 개발자라도 아무 소스나 수정하지 못하게 조절할 수 있습니다. 




SVN의 설치 방법은 그리 어렵지 않고 인터넷에서 쉽게 구할 수 있으므로 굳이 여기서 설명할 필요는 없겠죠?

댓글 7개:

  1. 네트웍 문제는 아무리 최소화 해도 C/S 방식인 이상 환경이 열악하면 SVN이라도 상당히 느리더군요.
    GIT, 머큐리얼, darcs 같은 분산형 SCM들이 많이 나오고 있는 이유도 그런 거겠죠.

    답글삭제
  2. eminency님 반갑습니다.
    좋은 지적 감사합니다.
    나중에 분산형 SCM도 좀 비교를 해보려고 했는데, 미리 얘기를 꺼내셨네요. ^^
    SVN이 상대적으로 다른 SCM보다 적은 네트웍 트래픽을 사용하긴하죠. 그래도 Offline이거나 극도로 느린 환경에서는 분산형 SCM이 도움이 되죠.
    네트웍이 느리다고 별도의 SCM를 각각 운영하는 회사를 본적이 있는데, 그로 인한 문제가 더 크기 떄문에 이를 통합하도록 제안을 한 경험이 있네요.

    답글삭제
  3. 안녕하세요. SVN을 막 설치해 사용중인데, 한글로된 주석문을 수정하면 diff할때 한글이 깨지더군요. 국내에도 수많은 사용자들이 있을텐데 설마 버그일리는 없을테고.. 뭔가 한글관련해서 설정하는 부분이 있는건지요?

    답글삭제
  4. 헝그리맨님 안녕하세요.
    어떤 Diff를 보신 것인지 정확하게 알수없네요.
    TortoiseSVN Diff를 보신 것인가요?
    TortoiseSVN을 쓰신다면 Diff툴은 원하는 것으로 바꿔서 사용할 수 있습니다.
    정확히 문제가 뭔지 화면도 캡쳐를 해서 제게 메일을 보내주시면 좋겠습니다. [email protected]입니다. 제가 도움이 되면 좋겠네요.

    답글삭제
  5. TortoiseSVN에서 비교를 하실 경우에는 TortoiseMerge라는 툴이 실행이 됩니다. TortoiseMerge에서 한글이 깨질 경우에는 Ctrl-T를 눌러서 Whitespaces 보기 기능을 끄시면 한글이 정상적으로 보이실 것입니다.

    답글삭제
  6. PinkPapa님 의견 감사합니다.
    제가 테스트해보니 확실히 더 좋아지긴 합니다.
    하지만 완전히 해결이 되지는 않는것 같습니다.
    글로만은 설명이 어려워서 제 블로그(http://www.codereview.co.kr)에 포스팅을 했습니다.
    번거롭겠지만 한 번 들러서 봐주시길 부탁드립니다.

    답글삭제
  7. 헝그리맨님 안녕하세요.
    http://softwaredev.tistory.com/entry/diffandmerge 에 답변 겸 글을 올렸습니다.
    감사합니다.

    답글삭제