노무현 대통령 배너
서브버전을 처음 쓸때 가장 많이 혼동하는 부분이 전역 리비전 방식인것 같습니다. 예를 들어 보죠.
사용자 삽입 이미지

세개의 소스파일이 현재 레파지터리에 들어있습니다. 리비전1에서는 세개 파일의 형상이 동일한 시점에 만들어졌고 동일한 리비전을 가지고 있습니다.

리비전2에서는 User.java와 Organization.java는 리비전1과 변경된게 없습니다. 하지만 Address.java가 수정되었기 때문에 리비전이 1에서 2로 증가한것입니다. 즉 변경된 사항이 없어도 레파지터리에 있는 어떤 형상이라도 변경되면 모든 형상의 리비전이 증가합니다. 이것이 전역 리비전 시스템의 특징입니다.

리비전3을 보죠. Organization.java는 리비전1,2와 동일합니다만 User.java가 변경되었기 때문에 리비전번호가 3으로 증가했습니다. Address.java도 리비전2와 비교했을때 동일한데도 리비전 번호가 3으로 증가했습니다.

이런 특징은 형상서버에게 어떤 영향을 줄까요 ? 리비전 번호를 가지고 고유한 형상을 찾을수가 없습니다.
User.java를 보면 리비전1과 리비전2를 형상으로 구분하는건 불가능합니다. (CVS에서는 가능합니다.)
하지만 해당 소스의 리비전 번호만 있으면 해당 소스가 커밋될때의 모든 형상의 찾을 수가 있습니다. 일종의 스냅샷인 셈이죠. 이건 무지 중요합니다.
제가 CVS를 쓰다가 서브버전을 처음 쓸때 이부분이 제일 이해가 안가더군요. 현재 국내에 나와있는 서브버전 서적은 두권입니다. 저는 이중에 실용주의 시리즈가 더 마음에 드네요.
서브버전을 이용한 실용적인 버전관리
서브버전
서브버전을 설치하면 pdf버전의 서브버전 매뉴얼이 같이 설치되니 그걸 참고하셔도 됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG subverion
지난번 이후로 여러가지 일로 바빠서 손을 못대다가 오늘 다시 꺼내봤습니다. 이클립스로 형상을 Subversion에 추가하려고 하는데 발생한 에러는 아무리 봐도 이상했습니다. 설정파일을 다  살펴봐도 에러가 없는데 왜 에러가 날까 ??
그래서 콤맨드 라인에서는 되는지 확인 해봤습니다. 그냥 레파지터리에 대고 checkout을 실행합니다.
svn checkout svn://localhost/moai
사용자 삽입 이미지

결과를 확인해 보니 잘 되더군요. 이클립스에서 다시 해봤습니다. 이번에는 에러없이 레파지터리 연결이 만들어지면서 팝업창이 떠서 사용자 계정을 물어봅니다.
사용자 삽입 이미지

passwd 파일에 정의해둔 계정의 Username과 Password를 입력합니다. Comment를 디폴트로 해서 확인을 누르면 형상이 하나하나 올라가는것을 진행바로 확인 가능합니다.
사용자 삽입 이미지

모든 형상이 다 올라가면 다음과 같이 형상관리 중인 형상에 노란색 마크가 붙습니다.
사용자 삽입 이미지

일단 문제는 해결했습니다만 왜 저렇게 컴맨드 라인에서 실행을 한번 해줘야 하는지 이해가 안가네요. 다음에는 빌드서버를 설치해서 Subversion과 연결해봐야 겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG subverion
SourceForge Enterprise Edition을 설치해 보려고 했는데 가만히 생각해 보니 CollabNet Subversion을 설치만 하고 테스트를 안해봤네요. 그래서 간단하게라도 레파지터리를 만들어서 잘 동작하는지 확인을 해봤습니다.

먼저 moai라는 이름으로 레파지터리를 만들었습니다. 설치할 때 최상위 레파지터리를 c:\svn_repository로 했습니다. 거기에서 subverion의 명령어 인터페이스를 이용합니다.
svnadmin create moai
그럼 아래처럼 moai라는 폴더가 만들어지면 안에 필요한 폴더와 파일이 좍 생겨서 들어갑니다.
사용자 삽입 이미지

이번에는 이 레파지터리를 사용할 사용자를 등록해 보겠습니다. 사용자 등록은 svnserve.conf 파일과 passwd을 이용 합니다. 레파지터리로 잡은 위치로 가보면 conf 폴더안에 이 파일들이 있는걸 볼 수 있습니다.
사용자 삽입 이미지

수정은 2단계로 이루어 집니다. 먼저 svnserve.conf 파일에 사용자 계정을 등록할 파일을 명시합니다.
눈치빠른 분은 벌써 그 파일이 뭔지 아셨을거 같네요. 예 바로  passwd 파일입니다. 그 다음에 passwd 파일에 원하는 사용자 계정을 입력하면 끝납니다.

그럼 바로 svnserve.conf 파일을 수정해 보겠습니다. 중간에 보면 주석으로 처리된 password-db 부분이 있습니다. 이 부분의 주석처리를 해제해 줍니다.
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
 password-db = passwd
이번에는 passwd  파일을 수정해 보겠습니다. [users]로 표시된 부분 아래 주석 처리된 부분이 사용자 계정입니다. id = password 로 되어 있습니다. 이 부분의 주석처리를 해제해 줍니다.
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
 harry = harryssecret
 sally = sallyssecret
이것으로 사용자 등록이 끝났습니다. 이제 subversion을 시작해야 합니다. 저는 서비스로 등록해 놨기 때문에 이미 실행중이어서 서비스 메뉴를 이용해 재시작 했습니다만 아닌 분들은 아래 명령어를 이용해서 서비스로 서브버전을 시작할 수 있습니다.
net start svnserve
서비스로 등록하지 않고 개별적으로 실행하고 싶다면 아래처럼 하면 됩니다.
svnserve -d -r C:\svn_repository
좀전에 생성한 레파지터리에 대해서 checkout 명령을 날려 보겠습니다.
svn checkout svn://localhost/moai
revision 0 가 checkout 되었다는 결과가 떨어지면 성공한 것입니다.
간단한 작업인데 정리하면서 하려니 시간이 좀 걸리네요. 다음에는 클라이언트를 이용해서 형상을 실제로 넣고 빼는 작업을 해보겠습니다. 그럼 얼추 테스트가 끝날거 같네요.

ps) 이 포스트는 CollabNet Subversion의 readme를 참조 했습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
작년에 진행하던 실용주의 스터디를 계속하기 위해서 일신하고 있습니다. :-)

어수선한 마음을 다잡고 빌드서버 테스트를 위해서 오늘은 형상관리 도구인 서브버전을 설치했습니다.
예전에 받아둔걸 설치하려다가 "그래도 최신버전이 낫겠지" 해서  subversion.tigris.org로 다운 받으려 들어갔는데 일전에 봐둔 openCOLLABNET이 생각났습니다.
openCOLLABET이 제공하는  subVersion은 두가지 버전입니다.
  • CollabNet Subversion
  • SourceForge Enterprise Edition
이중에서 먼저 CollabNet Subverion을 설치해 봤습니다. 일단 윈도우 버전이라서 그다지 설치에 어려움은 없었구요. 위자드 스타일로 필요한 설정을 다 해주니 정말 편리하더군요.

처음 물어보는 것이 아파치 웹서버를 같이 설치하겠느냐고 물어봅니다.
사용자 삽입 이미지

다음으로 서브버전이 사용할 포트번호와 서브버전 레파지토리로 사용할 위치를 물어봅니다. 아래 체크박스를 체크하면 서브버전이 윈도우즈 서비스로 등록됩니다.
사용자 삽입 이미지

그 다음에는 아파치 웹서버가 사용할 URI와 포트를 물어봅니다. 웹서버가 서브버전의 레파지터리를 바라보기 때문에 레파지터리 위치를 명시해야 합니다.
만약 아래와 같이 설치가 되면 나중에 사용자는 http://localhost/svn/repos-name 으로 레파지터리에 접근이 가능합니다.
사용자 삽입 이미지

설치후에 서비스를 확인해보면 자동으로 Subverion이 서비스로 등록되었음을 확인할 수 있습니다.
사용자 삽입 이미지

사실 collabNetSubversion이 기존 서브버전과 많이 다르지는 않지만 오픈소스가 갖고 있는 부족한점 - 안정성이나 편리성-을 채워줄 수 있는것 같습니다.

다음에는 sourceForge Enterprise Edition을 설치해 보려고 합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License