SVN-환경 설정

SVN 설치

Subversion은 널리 사용되는 오픈 소스 버전 관리 도구입니다. 오픈 소스이며 인터넷을 통해 무료로 사용할 수 있습니다. 기본적으로 대부분의 GNU / Linux 배포판과 함께 제공되므로 시스템에 이미 설치되어있을 수 있습니다. 설치 여부를 확인하려면 다음 명령을 사용하십시오.

[jerry@CentOS ~]$ svn --version

Subversion 클라이언트가 설치되지 않은 경우 명령은 오류를보고하고 그렇지 않으면 설치된 소프트웨어의 버전을 표시합니다.

[jerry@CentOS ~]$ svn --version
-bash: svn: command not found

RPM 기반 GNU / Linux를 사용하는 경우 yum설치 명령. 성공적으로 설치 한 후svn --version 명령.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install subversion

[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

Debian 기반 GNU / Linux를 사용하는 경우 apt 설치 명령.

[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:

[jerry@Ubuntu]$ sudo apt-get install subversion

[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

Apache 설정

GNU / Linux에 Subversion 클라이언트를 설치하는 방법을 보았습니다. 새 저장소를 만들고 사용자에게 액세스를 허용하는 방법을 살펴 보겠습니다.

서버에 설치해야합니다 Apache httpd 모듈 및 svnadmin 수단.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install mod_dav_svn subversion

그만큼 mod_dav_svn 패키지는 Apache httpd 서버를 통해 HTTP를 사용하여 저장소에 액세스 할 수 있습니다. subversion 패키지는 svnadmin 도구를 설치합니다.

Subversion은 다음에서 구성을 읽습니다. /etc/httpd/conf.d/subversion.conf파일. 구성을 추가 한 후subversion.conf 파일은 다음과 같습니다.

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

Subversion 사용자를 만들고 저장소에 대한 액세스 권한을 부여하겠습니다. htpasswd 명령은 HTTP 사용자의 기본 인증을 위해 사용자 이름암호 를 저장하는 데 사용되는 일반 텍스트 파일을 만들고 업데이트하는 데 사용됩니다 . '-c'옵션은 암호 파일 을 생성 하고 암호 파일이 이미있는 경우 덮어 씁니다. 이것이 '-c'옵션을 처음 사용하는 이유입니다. '-m'옵션은 암호에 대해 MD5 암호화를 활성화합니다.

사용자 설정

사용자를 만들자 tom.

[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

사용자를 만들자 jerry

[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@CentOS ~]#

모든 작업을 저장할 Subversion 상위 디렉토리를 만듭니다 ( /etc/httpd/conf.d/subversion.conf 참조 ).

[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/

리포지토리 설정

project_repo 라는 프로젝트 저장소를 만듭니다 . svnadmin 명령은 메타 데이터를 저장할 새 저장소와 그 안에 몇 가지 다른 디렉토리를 만듭니다.

[root@CentOS svn]# svnadmin create project_repo

[root@CentOS svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

저장소의 사용자 및 그룹 소유권을 변경해 보겠습니다.

[root@CentOS svn]# chown -R apache.apache project_repo/

SELinux 상태 도구를 사용하여 SELinux 가 활성화 되었는지 여부를 확인합니다 .

[root@CentOS svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

서버의 경우 SELinux가 활성화되어 있으므로 SELinux 보안 컨텍스트를 변경해야합니다.

[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

HTTP를 통한 커밋을 허용하려면 다음 명령을 실행합니다.

[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

Apache 서버를 다시 시작하면 Apache 서버 구성이 완료됩니다.

[root@CentOS svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS svn]# service httpd status
httpd (pid  1372) is running...
[root@CentOS svn]#

Apache 서버를 성공적으로 구성 했으므로 이제 저장소를 구성합니다. 인증 된 사용자에게만 저장소 액세스를 제공하고 기본 권한 파일을 사용합니다. project_repo / conf / svnserve.conf 파일에 다음 줄을 추가 하십시오.

anon-access = none
authz-db = authz

일반적으로 모든 Subversion 프로젝트에는 trunk, tags,branches 프로젝트의 루트 디렉토리 바로 아래에 있습니다.

트렁크는 주요 개발이 발생하고 일반적으로 프로젝트에 대한 작업을 개발자가 체크 아웃 된 모든 디렉토리입니다.

태그 디렉토리는 프로젝트의 가게라는 이름의 스냅 샷을하는 데 사용됩니다. 프로덕션 릴리스를 만들 때 팀은 릴리스에 들어가는 코드에 태그를 지정합니다.

나뭇 가지 당신이 개발의 서로 다른 라인을 추구하고자 할 때 디렉토리가 사용됩니다.

프로젝트 저장소 아래에 트렁크, 태그 및 분기 디렉터리 구조를 생성 보겠습니다 .

[root@CentOS svn]# mkdir /tmp/svn-template
[root@CentOS svn]# mkdir /tmp/svn-template/trunk
[root@CentOS svn]# mkdir /tmp/svn-template/branches
[root@CentOS svn]# mkdir /tmp/svn-template/tags

이제 다음에서 디렉토리를 가져옵니다. /tmp/svn-template 저장소에.

[root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[root@CentOS svn]#

이건 끝났어! 저장소를 성공적으로 생성하고 액세스를 허용했습니다.TomJerry. 이제부터는 지원되는 모든 작업을 저장소에 수행 할 수 있습니다.