Posted
Filed under Linux
[원문]:http://ezgreg.tistory.com/40

개발을 하면서 버전관리 프로그램은 필수 프로그램 중 하나입니다.
저는 서버에 직접적으로 작업을 하기 때문에 가끔씩 파일이 롤백된다던지 예전 삭제된 자료가 없어 고생한 적이 많습니다. ㅡㅜ

그래서 Subversion(이하 SVN)을 사용하고 있습니다.
SVN을 기준으로 업데이트하고 서버에 업로드하는 형식으로 내가 언제 어떤 부분을 수정을 했는지에 대한 모든 소스의 로그가 남고 간단히 예전 버전으로 롤백도 가능하기 때문에 사용하시면 많이 편리한 점이 많습니다.

여러명이서 작업을 하게 되는 프로젝트에서도 중복되지 않기 위해서 파트를 나누어 작업은 하겠지만, 공통파일들은 항상 있기 마련입니다. 이때도 내가 작업하는 파일에 대하여 Lock를 걸어 두어 다른 사람이 업데이트 하는 것을 방지할 수도 있습니다.

그럼 CentOS에서 SVN을 설치하는 방법에 대해서 알아보겠습니다.
CentOS의 유일한 무기 yum을 이용하여 설치를 하게 됩니다.

# yum install subversion

그리고 SVN의 데이터를 저장할 디렉토리를 생성합니다.

# mkdir /home/svn

그러면 SVN에 하나의 repository를 생성하겠습니다.

# cd /home/svn
# svnadmin create repo-tasks

자, 그러면 생성한 repository는 /home/svn 디렉토리안에 repo-tasks라는 디렉토리가 생성된 것을 볼 수 있습니다.

이제 설정 부분을 확인하도록 하겠습니다.

/home/svn/repo-tasks/conf 디렉토리 안에는 설정파일들이 존재합니다.

1. svnserve.conf 수정

# vi /home/svn/repo-tasks/conf/svnserve.conf

내용을 보시면 노란색 부분을 아래와 같이 수정합니다.

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.tigris.org/ for more information.

[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
### 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
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
#authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = Tasks Repository

anon-access = none -> 앞의 #(주석)을 제거합니다.
auth-access = write -> 앞의 #(주석)을 제거합니다.
password-db = passwd -> 앞의 #(주석)을 제거합니다.
realm = Tasks Repository -> Repository 명을 입력합니다.

2. passwd 수정

# vi /home/svn/repo-tasks/conf/passwd

노란색 부분과 같이 사용자를 추가합니다.

### 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
svnuser = svnpass

접속하려는 사용자를 ID = PASS 로 추가하시면 됩니다.

그럼 SVN 데몬을 실행합니다. 그리고 SVN이 사용하고 있는 3690 포트를 iptable에서 열어 둡니다.

# svnserve -d -r /home/svn/
# vi /etc/sysconfig/iptables

iptable 파일 내에 아래와 같은 부분을 추가합니다.

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

그리고 저장 후 나와서 iptable를 재 시동합니다.

# /etc/init.d/iptables restart

자 이로서 SVN의 설치가 완료되었습니다.

그러면 작업환경에서 SVN을 접속해 봅시다.
우선 저는 TortoiseSVN Client를 사용합니다.
여기를 클릭하시고 다운로드 받으셔서 설치하시면 됩니다.
64Bit 사용자는 여기를 클릭하세요.

만약 다운로드가 안되면 http://tortoisesvn.net/downloads에서 파일을 받으시길 바랍니다.

설치가 완료 되었으면, 다음단계로 이동합니다.
원하시는 곳에 임의의 새 폴더를 만드신 후, 새 폴더를 마우스 오르쪽 버튼으로 클릭하면 아래와 같은 메뉴가 나옵니다.


여기서 SVN Checkout 를 클릭하시면 SVN 서버로 접속을 하게 됩니다.


위에서 svn://svn-server-ip/repo-tasks 에서 svn-server-ip는 이전에 SVN을 설치했던 서버의 IP를 입력하시고 repo-tasks는 이전에 생성했던 SVN Repository입니다.

OK 버튼을 클릭하시면 아래와 같이 인증 창이 뜹니다.
여기서 이전에 passwd 파일에 추가한 사용자 명과 비밀번호를 입력하시면 됩니다.

인증이 완료되면 아래와 같이 추가되었던 파일을 다운로드 하게 됩니다.
새로운 Repository라면 아무파일도 다운 받지 않습니다.


그러면 SVN에서 Checkout한 디렉토리에 소스 파일을 하나 복사하여 추가합니다.
이것은 새로운 파일이 추가되었다는 것을 의미합니다.

파일을 추가 후, 다시 마우스 오른쪽 버튼으로 해당 폴더를 클릭하면, 아래와 같은 메뉴를 보실 수 있습니다.


여기서 SVN Commit는 변경된 파일을 적용하겠다는 의미입니다.
Commit를 하시게 되면 SVN서버에 변경된 파일들이 적용되는 것을 의미합니다.

위의 메뉴에서 SVN Update는 변경되어진 파일을 업데이트 하겠다는 의미로서 여러명이서 개발을 하게 될 때에는 Update를 한 후에 Commit를 하셔서 소스를 비교해가면서 업로드 하시면 됩니다.

휴... 너무 길어졌나...
그럼 다들 멋진 프로그램 개발하세요~
2013/01/03 18:07 2013/01/03 18:07