1. 개요
우선 SVN(Subversion)에 대한 설명은 다음 글을 참고합니다.
OS X 10.9에서 Apache Subversion 설치를 위해 당시 기준 최신 버전이었던 1.8.5 컴파일을 시도했으나 계속 오류가 발생했습니다. 구글링 결과 1.6.x 대의 성공 사례를 발견했습니다.
그래서 1.6.9를 먼저 시도했고, 이후 1.6.0으로 낮추어 컴파일한 끝에 성공했습니다.
성공 당시 사용한 apr은 1.4.8, apr-util은 1.5.3이었습니다.
아래 내용은 당시 OS X 10.9 환경에서 Apache HTTP Server와 Subversion을 연동한 기록입니다. 최신 환경에서는 패키지 관리자나 더 새로운 Subversion 버전을 사용하는 방법이 더 적합할 수 있으므로, 같은 오류를 재현하거나 구버전 환경을 맞춰야 할 때 참고용으로 보는 것이 좋습니다.
2. 설치
우선 HTTP Server의 httpd.conf 파일에 다음 설정이 포함되어 있어야 합니다. HTTP Server 컴파일 시 mod_dav를 포함했기 때문에 mod_dav.so 파일을 별도로 신경 쓸 필요는 없었습니다. Subversion 관련 설정은 별도의 httpd-svn.conf 파일로 분리하여 Include합니다.
2-1. httpd.conf
... LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ... # Subversion Include conf/extra/httpd-svn.conf
Include에 지정한 파일명과 실제 파일명이 일치해야 합니다. 아래 예시는 conf/extra/httpd-svn.conf를 기준으로 작성했습니다.
2-2. extra/httpd-svn.conf
<Location /svn/repo>
DAV svn
SVNPath /media/svn/repo
AuthType Basic
AuthName "Repository"
AuthUserFile /media/svn/repo/conf/passwd
AuthzSVNAccessFile /media/svn/repo/conf/authz
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
SVNPath는 실제 저장소 경로를 가리켜야 합니다. 예시에서는 저장소 위치를 /media/svn/repo로 두었으므로, 인증 파일도 같은 저장소의 conf 디렉터리 아래에 생성합니다.
2-3. /media/svn/repo/conf/passwd
$ cd /media/svn/repo/conf $ htpasswd -c /media/svn/repo/conf/passwd admin New password: Re-type new password:
htpasswd -c 옵션은 비밀번호 파일을 새로 만들 때 사용합니다. 이미 파일이 존재하는 상태에서 사용하면 기존 내용이 덮어써질 수 있으므로, 사용자를 추가할 때는 -c 옵션을 제외해야 합니다.
2-4. /media/svn/repo/conf/authz
[groups] repo = admin [/] @repo = rw * =
위 설정은 admin 사용자를 repo 그룹에 넣고, 저장소 루트([/])에 대해 읽기/쓰기 권한을 부여합니다. 마지막의 * =는 그 외 사용자에게 권한을 주지 않겠다는 의미입니다.
3. 명령어
3-1. svn import
$ svn import jpetstore http://192.168.0.1:8020/svn/repo -m 20140208.log Authentication realm: <http://192.168.0.1:8020> Repository Username: admin Password for 'admin': ...... Committed revision 1.
svn import는 로컬 디렉터리의 내용을 저장소에 최초로 올릴 때 사용합니다. 예시에서는 jpetstore 디렉터리를 http://192.168.0.1:8020/svn/repo 저장소로 가져옵니다.
3-2. svn checkout
$ svn co http://192.168.0.1:8020/svn/repo .
체크아웃 후에는 현재 디렉터리에 작업 사본이 생성됩니다. 이후 파일을 수정하고 커밋하는 방식으로 작업을 이어갈 수 있습니다.
3-3. svn commit
$ svn commit a.jsp -m 20140208.log
커밋이 실패한다면 먼저 인증 설정과 권한 설정을 확인합니다. 특히 AuthUserFile, AuthzSVNAccessFile, SVNPath 경로가 실제 파일 및 저장소 위치와 일치하는지 확인하는 것이 좋습니다.
4. Eclipse 연결
Eclipse에서 연결할 때는 당시 기준으로 Subclipse 1.6.x 업데이트 사이트를 사용했습니다.
* eclipse 연결은 http://subclipse.tigris.org/update_1.6.x/ 설치