개인적으로 만들고 있는 토이 프로젝트(?)들의 버전 관리를 SVN으로 하고 있습니다. 오늘 새로운 프로젝트를 하나 Subversion에 Repository를 추가하게 되면서 겸사겸사 블로그에도 정리하여 봅니다.
무언가 간단한 툴을 만들어보고 싶거나, 새로운 기술을 공부해보기 위해서 작은 여러 개의 프로젝트 소스들을 가지고 있습니다. 어느 정도 완성되어서 실제 도구로 활용하고 있는 프로젝트도 있고, 단순히 새로운 기술을 적용해보려 이것저것 시도해보면서 미완성 상태로 남은 프로젝트도 있습니다. 미완성이라고 해서 가치가 없는 게 아닙니다. 나중에 그 미완성 프로젝트의 소스를 레퍼런스로 다른 작업을 할 때 가끔 들여다보는 경우도 있어서요.
초기엔 소스 전체를 파일로 압축하여 외장하드에 보관을 하였다가, 현재는 집에 있는 라즈베리파이를 서버로 사용하여 Subversion을 설치하여 사용하고 있습니다.
목차
Subversion SVN 설치
라즈베리파이는 Debian Linux를 기반으로 한 Raspbian이라는 OS를 사용하고 있으므로, Debian과 명령어는 동일합니다.
pi@raspberrypi:~ $ sudo apt-get install subversion
위 명령어로 Subversion을 설치합니다.
Repository 생성
저는 일단 홈 디렉터리에 svn-repos라는 디렉터리에 저장소를 만들어서 관리하려고 합니다.
pi@raspberrypi:~ $ mkdir svn-repos pi@raspberrypi:~ $ cd svn-repos/ pi@raspberrypi:~/svn-repos $ svnadmin create [프로젝트명]
[프로젝트] 란에는 자신이 만들고 싶은 저장소 명을 입력하면 됩니다.
간단하게 Repository가 만들어졌습니다.
다른 svnadmin 명령어들은 Chapter 9. Subversion Complete Reference 링크에서 svnadmin 항목을 참고 하시면 됩니다.
Apache2 서버 연동
Apache2에 libapache2-svn를 설치하여 웹으로 접속하여 사용하고 있습니다.
아래 명령어로 간단하게 필요한 라이브러리를 설치하고 활성화합니다.
pi@raspberrypi ~ $ sudo apt-get install apache2 libapache2-mod-svn pi@raspberrypi ~ $ sudo a2enmod dav_svn
필요한 설정을 하기 위해서 아래 설정 파일을 수정합니다.
pi@raspberrypi:~ $ sudo nano /etc/apache2/mods-enabled/dav_svn.conf
파일 안의 <Location /svn> 이라고 되어있는 내용의 주석을 해제해 줍니다.
아래 내용은 제가 적용하여 사용하고 있는 설정 내용입니다.
<Location /svn> DAV svn SVNParentPath /home/pi/svn-repos AuthType Basic AuthName "Subversion Repo" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
아무나 SVN에 접근하는것을 원하지 않기 때문에 접근할 수 있는 사용자를 등록해주는 작업을 합니다.
pi@raspberrypi:~ $ sudo htpasswd -c /etc/apache2/dav_svn.passwd [사용자명] New password: Re-type new password: Updating password for user [사용자명]
처음 사용자를 등록할때만 htpasswd 뒤에 -c 옵션을 사용합니다. 이후 사용자 추가 시에는 -c 옵션은 사용하지 않도록 합니다. 사용자 추가 등록 시에 -c옵션을 입력하면 기존에 등록한 사용자가 모두 삭제됩니다.
Repository디렉터리를 Apache서버가 접근할 수 있도록 권한을 부여하고 서버를 재시작합니다.
pi@raspberrypi:~ $ sudo chown -R www-data:www-data /home/pi/svn-repos/ pi@raspberrypi:~ $ sudo /etc/init.d/apache2 restart
재시작이 완료된 후 브라우저에 “http://192.168.xxx.xxx/svn/[프로젝트명]”으로 접속하여 접속이 잘 되는지 확인해 봅니다.
접속에 문제가 없으면 사용하는 IDE의 SVN Repository URL란에 “http://192.168.xxx.xxx/svn/[프로젝트명]”을 입력하여 사용하면 됩니다.
SVN 명령어
SVN 서버에 접속하여 소스코드를 체크아웃 하거나 업데이트, 커밋을 위한 명령어는 다음 링크의 글을 참고 하시면 됩니다. 커맨드 라인에서 사용하는 SVN 명령어 정리