[CentOS7] SVN 설치 및 설정
안녕하세요. 갓대희 입니다. 이번 포스팅은 [SVN 설치 및 설정] 입니다. :)
▶ svn
- SVN은 SubVersion의 줄임말로 형상관리/소스 관리 툴이다
- 리눅스 subversion 패키지는 서버 + 클라이언트
▶ svn 설치 여부 확인 및설치
[root@goddaehee ~]# svn -bash: svn: command not found [root@goddaehee ~]# rpm -qa | grep subversion
|
위와같이 뜨는 경우 svn 설치되어 있지 않다. yu을 통해 설치 진행.
[root@goddaehee ~]# yum -y install subversion
|
▶ svn 저장소 생성 및 설정하기
-1. 저장소 생성
mkdir 폴더경로 cd 폴더경로 svnadmin create --fs-type fsfs 저장소명
|
ex)
[root@goddaehee ~]# mkdir -p /svn/repos [root@goddaehee ~]# cd /svn/repos [root@goddaehee repos]# svnadmin create --fs-type fsfs /svn/repos [root@goddaehee repos]# ll total 24 drwxr-xr-x 2 root root 4096 Feb 1 16:52 conf drwxr-sr-x 6 root root 4096 Feb 1 16:43 db -r--r--r-- 1 root root 2 Feb 1 16:43 format drwxr-xr-x 2 root root 4096 Feb 1 16:43 hooks drwxr-xr-x 2 root root 4096 Feb 1 16:43 locks -rw-r--r-- 1 root root 229 Feb 1 16:43 README.txt
|
-2. svnserve.conf 수정
기존 파일 샘플
svnserve.conf 파일을 svnserve.conf.old 로 변경하여 보존해두고 새로 작성한다.
[root@goddaehee ~]# cd /svn/repos/conf/ [root@goddaehee conf]# cat svnserve.conf (vi svnserve.conf) [root@goddaehee conf]# mv svnserve.conf svnserve.conf.old
|
방법1) vi svnserve.conf
다음 내용 입력
[general] #익명 접근의 권한은 none 없음 anon-access = none
#인증 접근의 권한은 write 읽기/쓰기 auth-access = write
#사용자 패스워드 저장 파일 위치 password-db = passwd
#프로젝트 명칭 realm = My_First_Repository
#인증 접근의 권한 설정 파일 위치 authz-db = authz
|
방법2)
[root@goddaehee ~]# echo '[general]' [root@goddaehee ~]# echo 'anon-access = none' [root@goddaehee ~]# echo 'auth-access = write' [root@goddaehee ~]# echo 'password-db = passwd' [root@goddaehee ~]# echo 'authz-db = authz'
|
-3. /etc/sysconfig/svnserve 생성
이 파일을 생성해주어야 service svnserve start/stop이 가능하다.
방법1) vi /etc/sysconfig/svnserve
기존 파일 샘플
[root@goddaehee ~]# vi /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="--threads --root /svn/repos"
|
방법2)
echo 'OPTIONS="--threads --root 저장소최상위폴더"' > /etc/sysconfig/svnserve
[root@goddaehee ~]# echo 'OPTIONS="--threads --root /svn/repos"' > /etc/sysconfig/svnserve |
▶ 계정 설정
svn는 OS계정이 아니라 자체 계정을 사용한다.
해당 저장소의 conf 디렉토리에 있는 passwd를 편집하여 계정을 등록한다.
패스워드 분실시에도 이 파일을 열어보면 된다.
passwd 파일을 passwd.old 로 이름을 변경하여 보존해두고 새로 작성한다.
- passwd 확인
[root@goddaehee conf]# vi passwd
|
- passwd 확인 및 설정
[root@goddaehee conf]# mv passwd passwd.old [root@goddaehee conf]# vi passwd
[users] test1 = testgogo1 test2 = testgogo2
|
- 혹시 (optional) 권한 없음 오류시에는
/svn/repos/conf/authz 파일 마지막에 아래와 같이 계정 권한을 추가한다.
[/]
test1 = rw
test2 = rw
▶ 서비스 시작
[root@goddaehee conf]# service svnserve start Redirecting to /bin/systemctl start svnserve.service [root@goddaehee conf]#
[root@goddaehee conf]# ps -ef | grep svnserve | grep -v grep root 17869 1 0 17:22 ? 00:00:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid --threads --root /svn/repos
[root@goddaehee conf]# netstat -anp | grep svnserve tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 17869/svnserve
|
- 기본 포트는 3690
- 다른 포트로 변경하려면 /etc/sysconfig/svnserve를 수정
- 접속 URL = svn://서버IP/경로 이다.
▶ 재부팅시 자동시작 설정[편집]
[root@goddaehee conf]# chkconfig svnserve on Note: Forwarding request to 'systemctl enable svnserve.service'. Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.
|
▶ 관련 용어
Repository : 프로젝트 파일 및 변경 정보가 저장되는 장소
Import : 빈 Repository에 맨 처음 파일들을 채우는 것
Export : 버전 관리 파일들을 뺀 순수 파일만 빼내는 것
Checkout : 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것 / Repository에서 프로젝트 관련 파일들을 받아온다
Update : 로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아 오기
Commit : 로컬 저장소의 변경된 내용을 서버로 전송 / Checkout한 파일의 수정사항을 갱신
Revert : 로컬 저장소의 내용을 이전 상태로 돌림
Add : 버전관리 대상으로 파일 등록
Trunk : 개발 소스를 commit 했을 때 개발 소스가 모이는 곳 / 프로젝트에서 가장 중심이 되는 디렉토리, 소스와 파일 포함
Branch : trunk에서 분리/복사한 소스로 버전별 배포판을 만들거나 trunk와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용
Tag : 특정 시점의 상태 보존 목적으로 사용 장기적으로 1.0, 1.1 등 버전 별로 소스 코드를 따로 저장, 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것