본문 바로가기

Papyrus/Dizzy Report

Subversion 1.7 Release : Entirely Overhauled

기다렸던 서브버전(SVN, Subversion) 1.7이 릴리즈되었다. 서브버전 1.7은 서브버전이 아파치 프로젝트의 공식적인 일원이 된 뒤 처음으로 릴리즈하는 버전이다.

서브버전 1.7의 가장 커다란 특징은, 새로운 기능 추가보다는 대대적인 오버홀이다. 당장의 기능 추가보다는 미래를 위해 내부를 대대적으로 재정비했는데, 서브버전의 클라이언트 부분에서 버전 관리 대상의 변경점을 추적하는 WC 라이브러리와 클라이언트 - 서버 사이의 통신을 담당하는 프로토콜이 그 대상이다.

그동안 서브버전이 발전해오는 동안, WC(Working Copy) 라이브러리는 더 이상 유지 보수하기가 힘들어질 정도로 코드는 대단히 복잡해졌다. 서브버전 1.7은 WC-NG(Working Copy-Next Generation)이라는 이름으로 이 WC 라이브러리를 대대적으로 개선했다. WC-NG의 가장 큰 수혜점은 수행 성능의 향상이다. 기존의 WC 라이브러리는 관련 정보를 수집하기 위해 전체 디렉토리 트리 구조에 반복적으로 자주 접근한다. 대신, WC-NG는 하나의 집중화된 데이터베이스를 사용하여 반복적인 디렉토리 순회 필요성을 완전히 제거했다. 또, WC-NG는 MS 윈도우즈와 같은 운영체제에서 myfile을 MyFile과 같은 이름으로 변경할 때 발생했던 문제를 고쳤다. (매우 오래되었는데 지독하게 고치지 않았던 문제다) 특히, WC-NG은 서브버전 코어 툴에만 그치지 않고, AnkhSVN, TortoiseSVN와 같은 IDE 툴도 WC-NG의 장점을 누릴 수 있다.

두 번째로, 서브버전 1.7은 그 동안 클라이언트 - 서버 사이의 데이터 전송을 담당했던 WebDAV/Delta-V 대신, HTTP 프로토콜을 사용한다. 결론부터 말하면, WebDAV/Delta-V 프로토콜은 여러가지 가능성을 가지고 있었지만 결국 실패한 프로토콜이 되어 버렸고, 이를 지원하기 위한 불필요한 추상층 때문에 성능을 갉아먹는 주범이었다. 서브버전 1.7은 더 이상 WebDAV/Delta-V 프로토콜을 사용하지 않고, 데이터 전송을 위해 HTTP 프로토콜을 사용한다. WebDAV/Delta-V는 하위 호환성을 위해 남아있을 뿐이며, 서브버전 클라이언트가 1.7 서버와 통신할 경우에는 HTTP 프로토콜을 사용한다. 서브버전 1.8에서는 디폴트 프로토콜로 HTTP를 사용할 예정이다.

서브버전 클라이언트 / 서버를 1.7로 업그레이드 하고자 결정했다면, 아파치의 httpd.conf를 약간 수정해줘야 한다. httpd.conf의 전역 설정에서, MaxKeepAliveRequests를 100에서 1000으로 고쳐주어야 한다. 자세한 것은 다음을 참고하라 : http://subversion.apache.org/docs/release-notes/1.7.html





Reference
http://subversion.apache.org/docs/release-notes/1.7.html
http://drdobbs.com/open-source/231500282