SVN

From CS Wiki

Subversion

설치[edit | edit source]

리눅스[edit | edit source]

대부분의 배포판에서 subversion이란 패키지명으로 설치 가능하다.

#yum install subversion

사용법[edit | edit source]

리눅스[edit | edit source]

Repository 생성

레파지토리로 사용될 폴더를 하나 생성한다. SVN 전용 서버가 아니라면 레파지토리용 계정을 별도로 생성하여 관리하는 것이 좋다.

#mkdir /home/svn

  1. cd /home/svn
  1. svnadmin create 레파지토리이름

위 mkdir, cd 등은 상황에 따라 무시해도 된다. 레파지토리를 만들 폴더가 정해졌다면 바로 svnadmin create 부터 하면 된다.

계정 만들기

레파지토리가 생성되면 그 안에 설정파일들이 생긴다. ./conf/passwd 파일 수정을 통해 계정을 생성할 수 있다.

$vi /home/svn/레파지토리이름/conf/passwd

[users]
# harry = harryssecret
# sally = sallyssecret
user001 = password!@

SVN 시작

#svnserve -d -r /home/svn

또는

  1. svnserve --daemon --root 디렉터리
  • -d는 deamon 데몬, 즉 백그라운드로 실행시키겠단 것이다. -i, -d, -X 등의 대체 옵션이 있다. 자세한 건 리눅스 svnserve 참고
  • -r은 root, 즉 루트 디렉터리를 지정하겠다는 것이다. -r로 폴더를 지정하지 않을 경우에도 실행이 되는데 이는 현재 디렉터리로 지정되는 것이 아니라 완전 리눅스 루트 디렉터리로 지정되므로 그렇게 사용할 순 없다. 즉 "-r 디렉터리" 옵션은 필수이다.

첫번째 Checkout

체크아웃이란 레파지토리에 있는 소스코드를 불러오는 행위인데, 아직은 아무런 파일이 없으므로 여기선 그냥 레파지토리가 잘 생성되고 데몬이 잘 돌아가고 있는지 테스트하는 용도이다.

#svn checkout svn://127.0.0.1/레파지토리이름 Checked out revision 0.

위와 같이 Checked out revision 0. 이라고 나오면 성공이다. 이제 외부에서 이 레파지토리에 접근 가능하고 형상관리가 시작 가능하다. 물론 방화벽이 기본적으로 닫혀 있는 경우가 많으므로 그런 경우 포트를 열어줘야 한다. svnserve로 SVN을 시작할 때 포트를 지정하지 않았다면 기본적으로 3690 포트를 사용한다. 보안을 위해 임의의 다른 포트를 사용해주는 것이 좋다.

#svnserve -d -r /home/svn --listen-port 61223

이미 실행시켰다면 끄고 다시 실행해야 한다. 종료 방법은 리눅스 svnserve 참고

기본 디렉터리 만들기

실제 프로젝트에서 협업을 하기 위해선 기본적으로 사용하는 3개의 디렉터리를 만들어줘야 한다.

  • trunk: 말 그대로 기둥이 되는 메인 저장소이다. 정상적으로 commit이 완료된 최신화된 파일이 저장되는 장소이다.
  • branches: 작업 중인 소스코드들이 저장되는 장소이다. trunk에서 branches들을 뽑아내어 수정을 완료하면 다시 trunk에 merge를 하게 된다. 즉, trunk는 저장소에서 하나이지만 branches는 여러개가 될수 있다.
  • tag: 소스코드가 지속적으로 수정되는 특정 기준시점에 대한 정보이다. commit이 계속 이루어진 최신 소스가 항상 정상 실행이 보장되는 것은 아니다. commit 후에 테스트를 하거나 릴리즈를 해 보고 오류가 있을 경우 가장 정상적으로 실행되었던 버전으로 돌려야 하는데 이 때 사용되는 것이 tag이다.