SUBVERSION 의 설치와 사용, Eclipse와의 연동 (linux)

S U B V E R S I O N 의 소개와 간단한 사용법, Eclipse와의 연동

SUBVERSION의 소개

Subversion은 소프트웨어 버전 관리 시스템이다. 공동 작업을 할 때 한사람이 프로젝트를 진행 하는 것이 아니라 여러 사람이 큰 프로젝트 하나를 진행 하기 때문에 버전관리 시스템이 필요 하게 되었다.

– 버전 관리 프로그램의 장점

  • 개발 버전과 릴리즈 버전이 섞이지 않게 관리 할 수 있다.
  • 수정을 잘못 하였더라도 기록이 남고 되돌리기 쉽다.
  • 수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적 할수 있다.
  • 개발자들이 따로 따로 백업을 하지 않아도 된다.

  • 버전 관리 시스템의 용어
    • 저장소 : 리포지토리(Repository)라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장된다. 그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장된 네트워크를 통해서 여러 사람이 접근 할 수 있다.
    • 체크아웃 : 저장소에서 소르를 받아 오는것. 체크아웃을 한 소스를 보면 프로그램 소스가 아닌 다른 디렉토리와 파일들이 섞여 있는것을 볼 수 있는데. 그것들은 버전관리를 위한 파일들이다. 임의로 지우면 저장소와 연결이 되지 않으므로 주의.
    • 커밋(Commit) : 체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 것. 커밋을 하면 전체 리비전이 1 증가 하게 된다.(Subversion)
    • 업데이트(Update) : 체크아웃을 해서 소스를 가져 왔더라도 다른 사람이 커밋을 하였다면 소스가 달라 졌을 것이다. 이 경우 업데이트를 하여 저장소에 있는 최신의 소스를 가져 오는데, 물론 바뀐 부분만 가져 온다.
    • 리버전(Revision) : 소스 파일등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 한다. Subversion에서는 각각의 파일 별로 리비전이 매겨지지 않고 한번 커밋(Commit) 할 때 마다 전체 리비전이 매겨 진다. 리비전을보고 전체 진행상황을 알 수 있다.
    • 임포트(Import) : 아무것도 들어있지 않은 빈 저장소(Repository)에 처음 소스를 넣는 작업
    • 익스포트(Export) : 체크아웃과 다르게 버전 관리 파일들을 제외한 순수한 파일을 받아 온다. (릴리즈 할 때 사용)
  • 저장소 (Repository) 의 디렉토리 배치
    • 저장소에 바로 소스를 넣어 프로젝트를 진행 할수 있으나, 버전 관리 시스템에서 권장하는 디렉 토리 배치 방법이 있다.

sample

    +–+—+- branches
    |    +–+- dav-mirror
    |    |    |— src
    |    |    |— doc
    |    |    +— Makefile
    |    |
    |    +— svn-push
    |    +— svnserve-thread-pools
    |
    +—+- tags
    |    +— 0.10
    |     +–+- 0.10.1
    |    |    |— src
    |    |    |— doc
    |    | +— Makefile
    |    |
    |    +— 0.20
    |    +— 0.30
    |    +— 0.50
    |    +— 1.01
    |
    +—+- trunk
           |— src
           |— doc
           +— Makefile

위의 구조가 보통 자주 사용되는 디렉토리 구조이다. 저장소 아래 branches, tags, trunk라는 3개의 디렉토리가 있고 각각의 용도를 가지고 있다.

  • trunk : 프로젝트에서 가장 중심이 되는 디렉토리, 모든 개발 작업은 trunk 디렉토리에서 이루어 진다. 그래서 위 구조에서는 소스 파일들과 디렉토리가 들어감
  • branches : 나무줄기 (trunk)에서 뻗어져 나온 나무 가지를 뜻합니다. trunk 디렉토리에서 프로그램을 개발하다 보면 큰 프로젝트에서 다른 작은 분류로 빼서 따로 개발해야 할 경우가 생긴다. 프로젝트 안의 작은 프로젝트라 생각 하자. Branches디렉토리 안에 또 다른 디렉토리를 두어 그 안에서 작업한다.
  • tags : 이 디렉토리는 프로그램을 개발하면서 정기적으로 릴리즈 할 때 0.1, 0.2, 1.0 하는 식으로 버전을 붙혀 발표하게 되는데 그때그때 발표한 소스를 따로 저장하는 공간이다. tag디렉토리 아래에는 버전명으로 디렉토리가 만들어져 있다.

설치

권장 설치 순서 : Subversion Eclipse libsvn-javahl

이 문서에서는 Ubuntu 8.04 Hardy Heron을 기준으로 시냅틱 꾸러미 관리자를 이용한 간단한 설치 방법만을 다룬다.

SUBVERSION의 설치 (Ubuntu 8.04 Hardy Heron)

Subversion의 최신 소스파일, 의존성 소스는 http://subversion.tigris.org을 참조 한다.

Microsoft Windows에서의 사용은

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

의 설치 파일을 사용 한다.


시스템 > 관리 > 시냅틱 꾸러미 관리자 > 검색

 

 
검색어에 subversion 입력


subversion 과 subversion-tools를 설치 한다. (의존성 모두 설치)

Eclipse 설치

subversion과 마찬가지로 시냅틱 패키지 관리자 검색 에서 “eclipse”


eclipse, eclipse-cdt 체크 후 설치 (의존성 모두 설치)

libsvn-javahl 설치

역시 마찬 가지로 시냅틱 패키지 관리자 검색 에서 “libsvn-javah” 설치

(의존성 모두 설치)

Subversion 설정

저장소 만들기

작업한 소스를 저장할 공간을 만들어야 한다. 저장소 (Repository)는 프로젝트 하나마다 있어야 하고 저장소 안에 소스가 모들 들어가게 되며, 다른 프로젝트를 진행 한다면 다른 저장소를 만들어야 한다.

/home/svn 안에 저장소를 만들도록 하겠다. ( 꼭 이곳이 아니여도 되며 예를 든 것이다 )

# mkdir /home/svn

# cd /home/svn/

/home/svn# svnadmin create –fs-type fsfs sample

/home/svn/에 sample이라는 폴더가 생성 되었고 그 안에 몇가지 디렉토리와 파일이 보인다면 완성.

공동 작업을 위한 저장소 그룹 설정

svn://로 작업을 하려면 시스템 계정을 만들어야 한다. 대부분 계정을 만들고 그룹을 하나로 묶는데 이럴 경우 그룹에 소속된 사용자들에게도 저장소 쓰기 권한을 주어야 한다. 그렇기 때문에 저장소의 그룹 권한을 조정해주어야 한다.

# chmod -R g+w sample  

svnserve 를 사용한 서버

Subversion 의 고유 프로토콜인 svn://을 이용할 수 있는 svnserve를 사용 하기 위해 설정을 한다.

svnserve로 서버를 실행 시키면 3690번 포트가 열린다.

sample 저장소가 /home/svn 아래에 있을 경우

# svnserve -d -r /home/svn/  

이렇게 실행한뒤 테스트 하기 위해

“# svn checkout svn://(Subversion서버 IP또는 도메인)/sample sample” 을 입력 한다. “Checked out revision 0.”이 나오면 제대로 설정이 된 것이다. (자신의 계정 홈폴더에 sample이라는 폴더가 생성 되었을 것이다. 이곳으로 소스를 체크 아웃 해온것.)

이제부턴 아무나(Anonymous) 저장소에 접근해서 체크아웃, 커밋 등을 할 수 있다.

svnserve에서 ID로 사용자 인증

svnserve에서 ID로 사용자 인증이 가능하다. 저장소 디렉토리로 가보면 /conf 라는 디렉토리에 svnserve.conf파일과 passwd파일이 보일것잇다. 먼저 svnserve.conf파일을 열어 다음과 같이 수정하자. (앞에 주석 #이 붙어 있으면 다음 항목들은 주석을 제거하고 다음과 같이 값을 준다.)

            anon-access = none        (아무에게나 (Anonymous)저장소에 접근 막음)

(아무나 쓰게 하려면 write)

auth-access = write        (ID로 인증된 사용자에게 쓰기 권한을 준다)

password-db = passwd    (password파일 이 안에 계정 정보가 들어 있다)

realm = 원하는 이름

이제 계정을 만들기 위해 passwd파일을 열어 다음과 같이 수정한다.

[users]

user_id = user_passwd 

user_id = 원하는 id, user_passwd = 해당하는 비밀번호를 넣는다. (주석을 반드시땔것)

기본 디렉토리 만들기

앞에서 설명 했던 trunk폴더를 만들어 보자

수월한 진행을 위해 시작 하기전에 저장소/conf/svnserve.conf파일의 다음 부분을 수정한다. (주석을 때는 것을 잊지말자.)

anon-access = none        

auth-access = write        

password-db = passwd    

realm = 원하는 이름

그 다음

# svn mkdir http://(Subversion 서버의 IP주소 또는 도메인)/sample/trunk

을 입력하면 편집기로 들어가면서 다음과 같은 문구가 나온다.

–This line, and those below, will be ignored–

A http://(Subversion 서버의 IP주소 또는 도메인)/sample/trunk

여기서 그냥 빠져 나온후 c 를 입력하고 엔터를 치면 리비전이 올라가면서 디렉토리가 만들어 진다.

Eclipse와 Subversion을 연동해서 사용 하기 (subclipse를 사용)

eclipse용 subversion 플러그인중 이 문서에서는 subclipse를 사용한 연동을 다룬다.

먼저 eclipse 실행후 메뉴에서 Help → Software Updates → Find and Install 선택


나타난 창에서 Search for new features to install 선택

다음 Install 창에서 New Remote Site 선택

새로운 Update Site를 추가 할수 있는데

그림과 같이 입력 Name : subclipse , URL : http://subclipse.tigris.org/update

정상적으로 추가된 경우 에러 메시지 없이 다음과 같이 subclipse가 추가 된다.

Subclipse에 체크 된 상태로 Finish후 몇번의 창을 넘긴다.

Next후 다음 창에서 Install All 을 선택하면 subclipse가 정상적으로 설치 되고

설치후 eclipse를 다시 시작 할 것인지 물어 보면 다시 시작 한다.

다시 시작된 eclipse에서 Window Show View Other 로 들어간다.

SVN이 추가 된것을 확인 할수 있다. SVN의 SVN Repository 를 선택


SVN Repository가 추가 된것을 볼 수있다.


Add SVN Repository 선택


나타나는 창에 Location에 앞서 만든 자신의 server를 등록한다.

jk44.pdf

One thought on “SUBVERSION 의 설치와 사용, Eclipse와의 연동 (linux)

  1. dinga

    좋은 정보 감사드립니다.
    복받으세요~~~

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> 

This site uses Akismet to reduce spam. Learn how your comment data is processed.