BLOG ARTICLE Subversion | 3 ARTICLE FOUND

  1. 2010.11.29 SVN (3) : SVN commit 메일 발송하기
  2. 2010.11.24 SVN (2) : VisualSVN 설정하기
  3. 2010.11.24 SVN (1) : VisualSVN 설치

Dev Note/Environment 2010.11.29 21:11

SVN (1), (2) 를 통해서 SVN 설치 및 설정까지는 알아봤다.
이번에는 SVN 저장소와 사용자 설정 후 사용자들이 commit 한 내용을 메일로 발송하는 것에 대해 간략하게 알아본다.
SVN 설치를 Window에 하였기때문에 commit에 대한 메일발송도 Window 기반으로 설정한다.

SVN의 commit 메일발송은 SVN에 있는 Hooks라는 것으로 처리하면 된다. 여기서 Hooks는 SVN의 기본적인 이벤트에 대해 스트립트를 연결해주는 기능이다.
Hooks 중 Commit에 대한 부분 중 Post-commit hook 부분에 사용자의 commit 내용을 메일로 발송하는 스트립트를 연결해주면 된다.

* PowerShell 설치 & 실행 정책
일단 먼저 메일을 발송하기 위해 Window의 PowerShell을 사용할 것이다. 먼저 PowerShell이 설치가 되어 있지 않다면 설치하면 된다. (PowerShell의 설치는 Google에게 물어보면 친철히 알려준다. ^^)

PowerShell 사용하면서 외부의 스크립트를 실행하거나, 로컬에서 스크립트를 실행해야 하는 경우가 발생하게 되는데, 이때 대부분 실행정책(Execution_Policy) 인하여 정상적인 실행이 되지 않는 경우가 발생 합니다. 

 문제를 해결하기 위해서는 Execution Policy RemoteSigned 수정하거나, 인증서를 생성하여 인증 절차를 진행해야 하는데, 여기서는 가장 간단한 RemoteSigned를 이용했다.

PowerShell RemoteSigned 실행 정책 변경 방법
    1. 시작, 프로그램, 보조프로그램, Windows PowerShell 폴더를 차례로 클릭합니다.
    2. Windows PowerShell 항목을 마우스 오른쪽 클릭한 다음 관리자 권한으로 실행을 클릭합니다.
    3. PowerShell Command 창에서 powershell -executionPolicy RemoteSigned 입력

그러면 PowerShell이 RemoteSigned 실행 정책으러 설정 된다.

인증서 생성 및 PowerShell 관련 문서 : http://technet.microsoft.com/ko-kr/library/dd347649.aspx

* SVN commit 메일 발송하기
commit 메일 발송은 두가지 설정으로 진행이 되는데
    1. SVN 저장소의 Hooks 중 Post-commit hook에 스크립트 생성
    2. 실제 hook에서 실행 할 PowerShell 스크립트 작성

생성 된 저장소를 선택하고 마우스 오른쪽 클릭한 다름 Properties를 선택한다.


Hooks 텝에서 위에 선택되어 있는 것처럼 Post-commit hook을 선택하고 Edit 한다.

Edit 할 내용은 아래와 같다. (Sample 임)
    SET SITENAME=[ basket android ]
    SET SMTP_SERVER=127.0.0.1
    SET REPOS=%1
    SET REV=%2
    SET EMAIL_TO=to@gmail.com
    SET EMAIL_FROM=svn@gmail.com
    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe [commit powershell path] '%SMTP_SERVER%' '%EMAIL_TO%' '%EMAIL_FROM%' '%SITENAME%' 'REPOS' 'REV'

SMTP_SERVER : 메일을 발송 할 SMTP 서버
%1, %2의 값은 SVN에서 hook을 실행할 때 넘어오는 값으로 저장소 이름과 버전 값
EMAIL_TO, EMAIL_FROM은 메일 받는사람, 보내는 사람으로 ","를 이용하여 멀티 가능 함.
[commit powershell path] : 실제적으로 메일을 발송하는 PowerShell 스크립트의 경로 값

위에서 설정한 commit powershell 파일만 생성은 아래와 같다. (이것도 물론 Sample 임, 그냥 써도 무방함.)
스크립트의 전체적인 내용은 사용자가 commit 한 Log 내용과 commit 된 파일들의 정보를 메일로 발송하는 것이다.

    $server = $args[0]

    $to = $args[1]
    $from = $args[2]
    $sitename = $args[3]
    $svn_repos = $args[4]
    $svn_rev = $args[5]
    $subject = ""
    $body = ""

    $author = &"[SVN Install Path]\bin\svnlook.exe" author $svn_repos --revision $svn_rev


    $subject = "Committed By : ($author) To $sitename Revision Number ($svn_rev)"

    $body += "$sitename Comments for this Revision ($svn_rev) : `n"

    $svnlook_log_line = ""
    foreach($svnlook_log_line in &"[SVN Install Path]\bin\svnlook.exe" log $svn_repos --revision $svn_rev) { 
         $body += $svnlook_log_line + "`n" 
    }


    $body += "`n`n"

    $svnlook_changed_line = ""
    foreach($svnlook_changed_line in &"[SVN Install Path]\bin\svnlook.exe" changed $svn_repos --revision $svn_rev) { 
         $body += $svnlook_changed_line + "`n" 
    }


    $smtpClient = new-object system.net.mail.smtpClient 

    $smtpClient.Host = $server
    $smtpClient.Port = 25
    $smtpClient.Send($from, $to, $subject, $body)

여기까지 하고 해당 저장소로 commit을 하면 메일이 발송되는 것을 확인 할 수 있을 것이다.

저작자 표시 비영리 변경 금지
신고

Dev Note/Environment 2010.11.24 22:48

앞의 SVN (1)에서 VisualSVN 설치에 대해서 알아왔다.
이번에는 설치된 VisualSVN을 기본으로 설정하는 부분을 간략하게 알아본다.

여기서 알아본 내용은
     1. 저장소 생성
    2. 사용자/그룹 생성
    3. 저장소 접근 권한 관리
이다.

1. 저장소 생성
    일단 먼저 SVN 저장소의 기본적인 구조를 잠깐 보면, trunk/tags/branches 라는 3가지를 볼수 있다.
    trunk
        - 기본적으로 개발을 시작할 때 사용하는 디렉토리 (메인 디렉토리로 생각하면 된다.)
    branches
        - release 버전과 유지보수 버전을 분리하고 싶을 때 사용
        - customizing  이나 hot fix 목적으로 분리하여 수정 함.
        - 수정이 계속해서 발생하나 궁극적으로 trunk에 합쳐지는 것이 일반적이다.
    tags 
       - 한번 만들어지면 수정하지 않음.
       - 프리징 된 버전이라 생각하면 된다.


    저장소의 생성은 아지 간단하다. 콘솔에서 Repositories를 선택하고 왼쪽 클릭 메뉴에서 "Create New Repository"를 선택하면 중앙의 입력 창이 생겨난다.
    입력 창에서 Repository 이름을 입력하고 아래의 체크박스를 선택한다.
    아래의 체크박스는 Repository를 기본 폴더 구조인 trunk, branches, tags로 생성 할 것인지 아니면 그냥 단일 폴더 구조로 생성할 것인지 여부를 체크하는 항목이다.
    입력과 선택 후 OK 클릭하면 저장소 생성 완료~~~~

2. 사용자/그룹 생성
    저장소를 사용할 사용자와 그룹 생성도 아주 간단하다 ... 기본적인 사용자/그룹의 개념이라 생각하면 된다.
    사용자를 생성하고, 그룹에 사용자를 매핑하면 된다.
    사용자의 정보는 아이디/비밀번호이며, 그룹의 정보는 이름과 멤버이다.
    사용자와 그룹의 관리는 왼쪽 트리 하단의 Users/Groups를 클릭하면 오른쪽 화면에서 추가, 수정, 삭제 가능.


    사용자 추가 화면 사용자 이름과 비밀번호를 입력하면 생성이 된다.


    그룹 생성 화면으로 그룹 이름을 입력하고 생성 된 사용자를 Add/Remove를 이용하여 멤버를 지정한다.

3. 저장소 접근 권한 관리
    저장소 또는 저장소의 하위 폴더를 선택하고 왼쪽 클릭 메뉴에서 Property를 선택하면 권한을 설정 할 수 있다.
    SVN의 기본적인 권한은 No Access, Read Only, Read / Write 3가지고 구분이 된다.
    각각의 권한 직접관으로 느껴지는 그대로다. 접근불가, 읽기전용, 읽기/쓰기
    SVN의 저장소는 폴더 또는 저장소 별로 상위 권한이 우선적으로 적용된다.



    위에서 보는 것과 같이 권한은 사용자와 그룹으로 모두 설정이 가능하다.
    기본적으로 Everyone 이라는 것이 추가되어 있는데 이넘은 무조건 No Access하는 것을 추천 말 그래도 아무나다
    저장소에 권한을 사용자와 그룹을 이용하여 적절하게 읽기, 읽기/쓰기 권한을 분배하고 확인을 클릭하면 된다.

다음에는 접근권한 창에서 보이는 Hooks라는 것에 대해 알아본다.
저작자 표시 비영리 변경 금지
신고

Dev Note/Environment 2010.11.24 22:17

* SVN(Subversion) 이란 ?
    SVN을 한마디로 말하라고 하면 형상관리툴이다. 
    여러명의 프로젝트 인원이 동일 한 작업을 수행할 수 있게 도와주며, 각각의 파일들의 형상을 관리할 수 있다는 것이다.
    SVN은 기존의 CVS의 단점을 보완하여 나온 시스템으로 Open Source이다.
    SVN의 자세한 내용이나 사용법은 http://subversion.tigris.org/ 에서 확인하면 된다.

이글에서는 SVN이 무엇이고, 어떻게 사용하는지에 대해서는 다루지 않고, SVN Server 설치에 대해서만 다루도록 한다.
여기서 다룰 VisualSVN은 subversion이라는 기존의 버전 관리 툴을 이용하여 쉽게 서버를 구축해주는 무료 프로그램이다. 윈도우만을 지원한다.

* VisualSVN Downloadhttp://www.visualsvn.com/server

* VisualSVN 설치
    기본적인 설치는 아주 간단하다. 몇번의 클릭과 폴더의 생성으로 설치가 완료된다.
    그리고, VisualSVN이 설치되면 window service에 자동으로 등록이 되기때문에 그 부분도 신경 쓰지 않아도 된다.


1. 설치 시작 : Next 버튼을 클릭한다.


2. 이용 동의 : 이용동의 부분을 체크하고 Next 버튼을 클릭한다. (물론 약관을 읽어보는 것이 좋다. 그러나 ^^)


3. 설치 할 컴포넌트를 선택하는 화면이다.
    화면에서 보이듯이 윗부분은 VisualSVN Server와 관리 콘솔을 함께 설치하는 것이며
    아래는 관리콘솔만을 설치하는 것이다. 
    만약, 다른 서버에 VisualSVN이 설치되어 있다면 관리콘솔만 설치해도 된다.
    기본적으로 윗부분을 선택하고 Next를 클릭한다.


4. VisualSVN을 기본 설정하는 부분이다.
    Location : 설치 될 폴더를 지정
    Repositories : 저장소로 사용할 루트 폴더를 지정한다.
    Authentication : SVN 인증을 어떻게 처리할지를 결정 (기본적으로 subversion authentication 선택)
    windows authentication은 window 사용자 계정으로 인증을 수행하게 된다.


5. 설치 완료.

이 얼마나 간단하게 설치가 되는가.
VisualSVN을 사용하지 않고 http://subversion.tigris.org/ 사이트에서 subversion에서 받아서 설치를 해도 된다.
subversion을 직접 받아서 설치하게 되면 커맨드로 저장소 생성 및 계정 관리를 auth 파일로 설정 및 좀 귀찮은 부분들이 많아서 만약 환경이 window라면 VisualSVN을 설치하는 것도 나쁘지는 않은 것 같다.

* 설치 완료 후 VisualSVN 콘솔


기본 적으로 설치가 모두 완료되었다면 위와 같은 VisualSVN 콘솔 화면을 볼 수 있을 것이다.
이 콘솔에서 앞으로 다룰 저장소를 생성하고, 사용자 계정과 권한을 설정하고, hook을 이용하여 메일을 발송하는 것을 처리 할 것이다.
저작자 표시 비영리 변경 금지
신고