본문 바로가기

Article/Free

SVN 설정 관련 주절주절....

이전의 포트폴리오가 "도대체 뭔말을 하는지 모르겠다!" 라고 말하길래, 포플을 작성 하면서 실제 개발 환경 셋팅 중...


컴퓨터를 여러대 돌릴수는 없으니 Desktop <-> Ubuntu (vmware) <-> Atrix Lapdock (Ubuntu) 이러한 환경 속에서 suvbersion을 활용한 형상 관리의 도입(이라 말하고 수박 겉핧기라 말한다)하려는 상태.


포플이라고 해봐야 기본적인 html만 알고 있으면 작성 가능한 페이지이고, 정확히 말해 난 개발자는 아니기 때문에 향후를 위해 "Subversion을 통한 형상관리를 위해 내가 알아야 하는 것은 무엇?" 이라는 생각으로 접근.


뭐 어쨌든 리눅스를 가지고 놀았던 시절도 벌써 10년 전이니 구글링을 통해 이것저것 정리중에 있는데, SVN의 설치 및 폴더 생성, 그리고 커밋/업데이트에 대한 자료만 있을 뿐 실제적으로 "테스트 페이지 자동 업데이트"와 관련된 정보는 거의 없다는 것이 문제...


정확히는 svnadmin으로 svn 폴더를 만들었 때 자동 생성된 hook/post-commit.tmpl 의 사용법이 아니라 그 개념에 대해서 알려준 곳이 없다는 것.


대부분 구글링을 통해 svn 사용법을 찾았다는 전제를 깔고.


1. 저장소 이름은 svn_tmp / 폴더 구성은 "trunk, branches, tags" 로 구성 됨. 각 개발자들은 bracnhes를 통해 개발하고 trunk로 통합됨.

   즉, 개발관련 최종 파일은 trunk라는 것. 따라서, 테스트를 위해서는 trunk를 테스트 서버로 전송 시켜야함.


2. 테스트 서버 홈디렉토리는 /var/www/test or http://ip/test/


3. trunk를 /var/www/test 로 체크아웃

    sudo svn co svn://localhost/svn_tmp/trunk /var/www/test


4. svn_tmp/hook/post-commit 파일 생성

#cp post-commit.tmpl post-commit


#sudo gedit post-commit


#post-commit에 아래 내용 추가


REPOS="$1"
REV="$2"


#소스패스를 자동으로 업데이트하고 그 결과를 svn 디렉토리의 log 파일에 기록

svn update /var/www/svn_te >> /home/svn/svn_tmp/log


5. 수정된 파일을 커밋 후 테스트 서버에서 커밋된 내용이 제대로 보이는 것을 확인 했으면 apache 설정에서 svn 경로등이 보이지 않도록 설정

#sudo gedit /etc/apache2/httpd.conf

<DirectoryMatch "^/.*/\.svn">
      Deny from all
</DirectoryMatch>


#sudo apachectrl restart


만약 httpd.conf의 위치를 모르겠다면 #locate httpd.conf


* 테스트 섭이기 때문에 실제 반영이 즉시 되도록 수정. 만약 실서버에 적용되는 경우에는 tags 기능을 이용하여 전체 소스가 아닌 변경된 소스만을 배포하는 정책이 필요


내가 잘못 이해하고 있다면 누군가 코멘트를 달아주시기 바람~~