서브버전 설정 · 3 min read · Jan 02, 2026
Apache를 사용하여 서브버전 리포지토리 설정하기, 자동 업데이트 가능한 작업 복사본 - 2페이지
리포지토리 생성하기:
리포지토리를 /usr/local/subversion/repository에 fsfs 데이터베이스를 사용하여 생성하고 싶다고 가정해 보겠습니다. 다음 명령어를 실행합니다:
mkdir -v /usr/local/subversion//usr/bin/svnadmin create --fs-type fsfs /usr/local/subversion/repository이렇게 하면 /usr/local/subversion/repository 아래에 서브버전 리포지토리가 생성됩니다.
ls /usr/local/subversion/repositoryconf/ dav/ db/ format hooks/ locks/ README.txt리포지토리 디렉토리 아래에서 이러한 파일들을 볼 수 있어야 합니다.
생성된 리포지토리를 제공하기 위한 httpd.conf 설정:
httpd.conf 또는 적절한 아파치 구성 파일에 다음 줄을 추가합니다.
DAV svn
SVNPath /usr/local/subversion/repository/
아파치 구성 파일에 mod_dav 모듈이 로드되어 있고 모듈 디렉토리 아래에 있는지 확인하십시오.
인증 설정:
인증을 위해 아파치 구성 파일을 또 한 번 수정해야 합니다.
기본 인증을 위해서는 이전에 svn 리포지토리를 추가한 httpd.conf에 다음 줄을 추가하면 됩니다.
AuthType Basic
AuthName "{인증 팝업 탭의 이름}"
AuthUserFile {비밀번호 파일의 위치}
Require valid-user그래서 이렇게 보여야 합니다.
DAV svn
SVNPath /usr/local/subversion/repository/
AuthType Basic
AuthName "Subversion 리포지토리"
AuthUserFile /usr/local/subversion/repository/conf/svn-auth-file
Require valid-user
누군가 접근하기 전에 비밀번호 파일에 사용자를 추가하는 것이 필요하며, 이는 다음 단계에서 설명합니다.
SVN 사용자 추가하기:
우리는 아파치 서버와 아파치 기본 인증 방법을 사용하고 있습니다.
표준 아파치 설치에 제공된 htpasswd 바이너리를 사용하여 비밀번호 파일을 생성해야 합니다.
htpasswd -cmd /usr/local/subversion/repository/conf/svn-auth-file {사용자 이름}-c 옵션은 새로운 htpasswd 파일을 생성합니다.
-m은 비밀번호를 MD5 알고리즘으로 암호화합니다.
-d는 비밀번호를 CRYPT 알고리즘으로 암호화합니다.
여기서 {사용자 이름}은 인증에 사용될 실제 사용자 이름을 나타냅니다.
경고: 첫 번째 사용자를 추가한 후에는 -c 옵션을 사용하지 않아야 합니다. 그렇게 하면 파일 내의 모든 기존 사용자가 생성되고 교체됩니다.
htpasswd -md /usr/local/subversion/repository/conf/svn-auth-file {사용자 이름}초기 리포지토리 레이아웃 설정:
리포지토리는 주로 3개의 표준 폴더를 포함합니다.
branchestagstrunk리포지토리에 이러한 표준 폴더를 생성하기 위해, 원하는 곳에 임시 폴더를 생성합니다. /tmp가 좋은 아이디어입니다. 다음 하위 디렉토리를 포함합니다.
mkdir -pv /tmp/subversion-layout/{branches,tags}모든 레이아웃 폴더를 만든 후, 프로젝트의 모든 내용을 trunk 폴더로 이동합니다.
mv -v /usr/local/apache2/htdocs /tmp/subversion-layout/trunk그런 다음 임시로 생성된 디렉토리를 초기 가져오기합니다.
/usr/local/subversion/bin/svn import /tmp/subversion-layout/ http://127.0.0.1/subversion/이렇게 하면 기본 리포지토리 레이아웃이 설정되고 첫 번째 수정이 이루어집니다.
작업 복사본 설정하기:
이제 마지막 단계에서 생성한 임시 폴더를 삭제할 수 있습니다. 모든 파일이 이미 리포지토리에 있기 때문입니다.
이제 해야 할 일은 /usr/local/apache2/ 아래의 리포지토리에서 모든 파일의 작업 복사본을 만드는 것입니다.
그래서 개발자가 PHP 코드를 업데이트할 때마다 작업 환경에서 코드 변경 사항이 적용되는 것을 볼 수 있습니다.
하지만 작업 복사본을 설정하는 것만으로는 이 작업을 완료할 수 없으며, 작업 복사본과 함께 작동하는 후크 스크립트를 만들어야 합니다.
따라서 개발자가 리포지토리에 커밋할 때마다 후크 스크립트가 자동으로 실행되어 작업 복사본을 업데이트합니다.
/usr/local/apache2/ 아래의 htdocs 폴더가 이미 존재하지 않는지 확인하십시오.
원한다면 htdocs_old로 이름을 바꿀 수 있습니다.
작업 복사본을 설정하려면 다음을 수행합니다.
cd /usr/local/apache2/su – apache/usr/local/subversion/bin/svn checkout http://127.0.0.1/subversion/trunk/ htdocs후크 스크립트 설정하기:
후크는 새로운 수정 생성 또는 버전이 없는 속성 수정과 같은 리포지토리 이벤트에 의해 트리거되는 프로그램입니다. 각 후크는 해당 이벤트가 무엇인지, 어떤 대상에서 작동하는지, 이벤트를 트리거한 사람의 사용자 이름에 대한 충분한 정보를 전달받습니다. 후크의 출력 또는 반환 상태에 따라 후크 프로그램은 작업을 계속하거나 중지하거나 어떤 식으로든 일시 중지할 수 있습니다.
후크 하위 디렉토리는 기본적으로 다양한 리포지토리 후크에 대한 템플릿으로 채워져 있습니다.
post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmplpost-lock.tmpl pre-commit.tmpl pre-unlock.tmplpost-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl지금은 post-commit 후크 스크립트에 대해 논의할 것입니다. 이는 우리 경우에 필요한 것입니다.
post-commit.tmpl 파일을 후크 디렉토리 내의 post-commit으로 복사하고 post-commit에 실행 권한을 부여합니다.
cp -v /usr/local/subversion/repository/hooks/post-commit.tmpl /usr/local/subversion/repository/hooks/post-commitchmod +x /usr/local/subversion/repository/hooks/post-commit이제 post-commit 스크립트를 편집하고 아래의 두 줄을 주석 처리한 후 다음 줄을 추가합니다.
#commit-email.pl "$REPOS" "$REV" [email protected]
#log-commit.py --repository "$REPOS" --revision "$REV"
/usr/bin/svn update /usr/local/apache2/htdocs/ >> /usr/local/subversion/repository/logs/post-commit.log그런 다음 /usr/local/subversion/ 아래에 logs라는 새 폴더를 만들고 post-commit.log 파일을 비워 둡니다.
mkdir -v /usr/local/subversion/repository/logs/touch /usr/local/subversion/repository/logs/post-commit.log다시 한 번, 리포지토리 폴더가 적절한 사용자 소유권을 가지고 있는지 확인해야 하며, /usr/local/subversion/repository/에 대해 apache 사용자에게 소유권을 설정하는 것이 좋습니다.
chown -Rv apache.apache /usr/local/subversion/repository/모든 것이 잘 진행되면, 이제 추가 가져오기를 위한 준비가 된 서브버전 리포지토리 서버가 설정되었습니다. 아파치 서버를 시작하면 됩니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.