IT_Programming/Dev Tools

Visual SVN / AnknSvn 사용법 및 Tips (Trac / CommitMonitor / VS 연동)

JJun ™ 2011. 3. 27. 12:31

간단히 VisualSVN 서버 설정법과 Xcode에서 프로젝트를 관리하는 법에 대해 알아보겠습니다.

VisualSVN 홈페이지
http://www.visualsvn.com/

일단 홈페이지에서 서버 버전을 받아서 설치해주세요. 설치 중간에 포트 설정하는 부분이 있는데

저같은 경우 회사에서 80포트를 제외하곤 다 막아놓은 듯 하여 80포트로 설정했습니다. 

https의 443이 기본 값으로 잡혀있는데, 필요하다면 저처럼 포트를 변경해주시면 되겠습니다.

(설치를 다 하고 나중에 변경해도 상관은 없습니다.)

 


설치를 마치고 프로그램을 실행하셨다면 제일 먼저 사용자 계정부터 생성해봅시다.

위 스샷의 아래 부분에 보면 저는 Use Subversion authentication에 체크한 상태인데요.

윈도우의 계정이 아닌 VisualSVN에서 생성하는 자체 계정을 사용하겠다는 뜻입니다.

아무래도 보안상 그게 더 안전하겠죠. 팀 프로젝트에 개인의 윈도우 계정을 사용할 필요는 없으니까요.

User에 우클릭 해서 Create User 누르시고 계정을 만드시면 됩니다.

 

 


다음은 접근 권한 설정인데요. 기본적으로 모든 사용자에게 읽기/쓰기 권한이 주어지는데

이걸 막아주고 방금 생성한 계정에만 읽기/쓰기 권한을 주는게 좋겠죠? Repositories에 우클릭 해서

Properties로 들어간 다음
 


일단 Everyone은 No Access로 바꿔주시고
 


Add 버튼을 눌러서 방금 생성한 계정을 추가해주세요.

 

 


그럼 아래 그림처럼 Everyone은 No Access로, 새로 만든 계정은 Read / Write로 설정이 됩니다.

 


다음은 프로젝트 폴더를 하나 만들어보죠.

Repository에 우클릭 해서 Create New Repository 해주시면 되겠죠?

 

 

 

 

 

  • trunk : 개발이 이루어지는 디렉터리
  • branches : 프로젝트 안의 작은 프로젝트
  • tags : 릴리즈 버젼 보관 장소


이게 끝입니다. 주소는 도메인/svn/프로젝트폴더 하시면 되구요. 

로컬에서 테스트를 해보시려면 저같은 경우 http 포트로 만들었으니 http://127.0.0.1/svn/snoopy/ 하면

되겠죠. 테스트 결과 잘 접속되었습니다.

하지만 로컬에서 접속하는건 무의미하고, 외부에서 접속이 가능해야 진정한 서버겠죠?

현재 저는 이 과정을 VMware에서 진행하고 있는데요, 제가 공유기를 사용하고 있고 네트워크를

브릿지 모드로 설정해서 VMware에 할당된 IP는 192.168.0.10입니다.

테스트 결과 제 메인 컴퓨터에서도 잘 접속되고 있습니다.

 


이렇게 SVN 서버 셋팅은 잘 되었습니다.

다음으로 맥에서 Xcode로 직접 프로젝트를 올리고 관리해보겠습니다.

마찬가지로 VMware에 설치된 맥이긴 합니다만... 

이건 그냥 과정을 생략하고 결과적으로 잘 된다는 스샷만 보여드리겠습니다.

임포트, 체크아웃, 커밋, 리프레쉬, 업데이트 모두 잘 되었습니다.

 

 

 

 

혹시 커밋할 때 155005 에러가 발생하는 경우


검색해보니 Repository에서 Build 폴더를 Delete 하고 다시 체크아웃 하면 해결이 되더군요.

 

 

 


 

[Trac 설치하기]

 

 Note

     Currently we do not technically support Trac plug-in for VisualSVN Server.

     Please note that Trac plugin for VisualSVN Server was never released officially

     and you can use it on your own risk. We do not plan to update the plug-in on a regular basis.

 

  1. Download VisualSVN Server 2.1 or later.
  2. Install it using default settings.
  3. Create repository "MyProject" in VisualSVN Server Manager.
  4. Create at least one user if you use Subversion authentication.
  5. Download VisualSVN-Server-Trac-2.1.1.21699.zip (~12MB).
  6. Unzip it to %ProgramFiles%\VisualSVN Server\
  7. Create folder C:\Trac
  8. Allow "Full Control" access to C:\Trac folder for built-in Network Service account (or other account that is used to run VisualSVN Server's service).
  9. Execute command:
    "%ProgramFiles%\VisualSVN Server\trac\trac-admin.bat" C:\Trac\MyProject initenv
    Use default settings. Provide C:\Repositories\MyProject as repository path.
  10. Add system variable
    PYTHONHOME=%ProgramFiles%\VisualSVN Server\Trac\python
  11. Add the following text to file C:\Program Files\VisualSVN Server\conf\httpd-custom.conf if you use Subversion authentication:
    LoadModule python_module "trac/python/mod_python_so.pyd"
    LoadModule authz_user_module bin/mod_authz_user.so
    <Location /trac>
      SetHandler mod_python
      PythonInterpreter main_interpreter
      PythonHandler trac.web.modpython_frontend
      PythonOption TracEnvParentDir C:\Trac
      PythonOption TracUriRoot /trac
      AuthName "Trac"
      AuthType Basic
      AuthBasicProvider file
      AuthUserFile "C:/Repositories/htpasswd"
      Require valid-user
    </Location>
    or this text if you use Windows authentication:
    LoadModule python_module "trac/python/mod_python_so.pyd"
    LoadModule authz_user_module bin/mod_authz_user.so
    <Location /trac>
      SetHandler mod_python
      PythonInterpreter main_interpreter
      PythonHandler trac.web.modpython_frontend
      PythonOption TracEnvParentDir C:\Trac
      PythonOption TracUriRoot /trac
      AuthName "Trac"
      AuthType VisualSVN
      Require valid-user
    </Location>
  12. Restart VisualSVN Server.
  13. Open http://localhost/trac/ or https://localhost/trac/ (if you setup secure connections) in a browser and enter user name and password.

 

 


 

1. http://visualsvn.com/server/download/ 방문하여 VisualSVN Server를 받는다.

 

 

2. 기본값으로 설치한다.

     설명이 부족한 부분은 http://blog.naver.com/bunnyon/150080626064 참고

 

 

3.  VisualSVN Server Manager에서 Repository를 원하는 이름으로 생성한다.

     (나는 참고로 byuri라고 만들었음. 요거 나중에 사용됨)

 

 

4. Subversion authentication을 사용한다면 사용자 하나를 생성한다.

 

 

5. http://visualsvn.com/files/VisualSVN-Server-Trac-2.1.1.21699.zip 을 다운로드 받는다.

 

 

6. C:\Program Files\VisualSVN Server\ 위치에 압축을 풀어둔다.

 

     

 ☜ 요런 모양이 됨.

 

 

7. Trac가 저장될 폴더를 하나 생성한다. 예를들어 "D:\Trac"

 

 

8. 방금 생성한 폴더의 등록정보로 가서 보안정보에서 Network Service에게 모든 권한을 준다.

    

 

     (요거 잘 안되시는분은 아래 사진 참고)

    

 

 

9. C:\Program Files\VisualSVN Server\trac\python\Scripts 로 이동하여

     trac-admin-script.py 파일을 열어 첫 라인을 파이선이 있는 위치로 수정한다.

     예를들어 나의 경우 #!"C:\Program Files\VisualSVN Server\trac\python\python.exe" 이다.

 

     [trac에 admin 권한 설정]

     trac-admin (c:\Trac\프로젝트설치폴더) permission add (SVN에등록된사용자) TRAC_ADMIN 

 

 

 수정 :  그 후 C:\Program Files\VisualSVN Server\trac>에서

    trac-admin.bat D:\Trac\byuri initenv 을 수행한다. 여기서 파란 글씨는 아까 3번의 그 이름이다.

 

  추가 : 다 기본값을 쓰되 "Path to repository [/path/to/repos]> D:\Repositories\byuri"

 

10. 환경변수에 파이선 홈 위치를 추가한다.

     PYTHONHOME=%ProgramFiles%\VisualSVN Server\Trac\python

     

 

 

11. C:\Program Files\VisualSVN Server\conf\httpd-custom.conf 파일을 수정한다.

LoadModule python_module "trac/python/mod_python_so.pyd"
LoadModule authz_user_module bin/mod_authz_user.so
<Location /trac>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir D:\Trac
  PythonOption TracUriRoot /trac

  AuthName "Trac"
  AuthType Basic
  AuthBasicProvider file
  AuthUserFile "D:/Repositories/htpasswd"

  Require valid-user
</Location>

    붉은 부분은 자신의 설치하신 폴더를 사용하시면 됩니다.

 

 

12. VisualSVN Server를 다시시작 합니다.

 

 

13.  http://localhost/trac/(https를 사용했다면 당근 https://localhost/trac/)으로 접속해 보세요~

 

 

이상 http://visualsvn.com/server/trac/을 직역 + a 하여 적어보았습니다.

혹시 시스템마다 다를 수 있으니 안되시는 분은 어디서부터 막히는지 알려주세요~

  

보너스!!!

 

  • C:\Program Files\VisualSVN Server\trac\python\Scripts>trac-admin.exe D:\Trac\byuri permission add byuri TRAC_ADMIN

 

요렇게 하시면 웹 관리가 가능합니다.

 

그리고!!!

  

위의 9번처럼 C:\Program Files\VisualSVN Server\trac\python\Scripts 로 이동하셔서

easy_install-script.py 가장 위에 줄도 파이선 실제 위치로 수정하시고

 

  • easy_install --upgrade Trac

 

실행하시면!!! 0.11.7로 업그레이드 됩니다 ^^*

 


 

 

 

[ Visual SVN 설치 및 Visual Studio 간의 연동 ]

 

 

CSV, 소스세이프, 팀슈트 여러 휼륭한 소스제어 프로그램이 있지만, 개인적으로 SVN을 선호한다.
서브버젼의 원 홈페이지는 http://subversion.tigris.org/ 이며…. 오픈소스형태로 운영 되고 있다.
여러참여 개발자로인해 다양한 서드 파티툴들이 존재한다.

 

이곳에서 소개하는 것은 SVN과 함께 Visual Studio를 사용시 필요한 삼종 셋트 서드 파티 툴을

소개하고자한다.

 

http://www.visualsvn.com/server/download/
(VISUAL SVN SERVER): SVN서버를 포함하고 있으며,GUI 관리툴을 통해 저장소및 유져셋팅이 가능

 

http://www.visualsvn.com/visualsvn/download/tortoisesvn/
(탐색기에서 사용가능한 SVN CLIENT)

: 윈도우의 탐색기 명령만으로 SVN의 모든 클라이언트 명령을 조작할수 있게된다.

  즉, VS를사용하던 델파이를 사용하던 결국 소스는 파일 기반이기 때문에 개발 툴에 상관 없이 소스제어를

  가능하게한다.

 

 

(Visual Studio에서 사용가능한 VS ADDIN)

: VS내에 모든 소스 제어 명령이 솔류션 탐색기의 팝업 메뉴에 포함되어 있으며 둘 중에 한 개만 택일(선택 변경시 이전꺼는 언 인스톨이 요구됨)

 

 

http://www.visualsvn.com/visualsvn/download/
VS를 이용하는 개발자에게 좀더 편한 기능을 제공한다.

VS지원 버젼은 2003~2010까지 유료라는 단점이있다.
유료가 거슬린다면 아래 무료 툴도 있으니 아래 툴사용

 

 

http://ankhsvn.open.collab.net/
2.1버젼을 사용해야하며 실질적으로 2005버젼부터 지원, 2002-2003지원 버젼인 옛버젼을 사용하려면 SVN서버 구 버젼을 사용해야 하기 때문에

추천되지 않는다.

 

 

 

 
먼저 VISUAL SVN SERVER를 설치하게되면 위와 같은 옵션이 뜨게 되는데…

첫번째 옵션으로 설치한다. 두번째 옵션은 SVN SERVER가 이미 설치 되었을시 콘솔 관리 프로그램만

설치하는 옵션이며 이 설치 패키지는 SVN SERVER를 포함하고 있기 때문에 첫번째 옵션으로 두가지

모두 설치할 수 있다.

 


기본적으로 https 보안 프로토콜을 사용하며, 인증에 관련된 두 가지 옵션이 있다.
하나는 svn자체 계정으로 소스 제어에 대한 권한을 주는 것이고, 다른 하나는 회사 내에서 사용하는

컴퓨터가 도메인 셋팅이 되어 윈도우계정을 활용 할 수 있을시 별도의 계정 추가 없이 기존 ms윈도우 계정을 활용할수 있는 옵션이다.

 


Visual Svn의 설치를 완료하면.., 제어판의 관리도구부문에 등록이 되어
이곳에서 셋팅 프로그램을 띄울수 있다.

 


소스 제어를 위한 유져 및 그룹을 등록할 수 있다.

소스를 볼수 있는 read 소스에 커밋을 할 수 있는 read/write 두 가지 권한을 부여할 수 있다.

 

 
저장소는 Repository 라고 불리며, 프로젝트 개념이라고 보면 된다.

물론 어떠한 프로젝트는 특정한 저장소 밑에 여러개 둘수도 있으며 디렉토리별로 권한 셋팅도 가능하다.

이것은 관리되는 프로젝트에 따라 저장소를 개별로 둘것인지 아니면 여러 프로젝트를 포함하게될지?

프로젝트의 성향에따라 달라지게 된다.


선택할수 있는 옵션은 trunk,branches,tags의 저장소를 자동으로 추가할지 를 선택할수 있다.

각 디렉토리의 의미는

 

trunk: 본체 부분으로 메인 빌드 프로젝트 소스라고 보면된다.


branches: 본체에서 뻗어나온 가지부분으로, 주로 새로운 기능 추가시 이곳에서 작업을 수행하게 되며

                특정시점(업데이트시점)에서 trunk와 머지를 하여 다시 합하거나, 합치지 않은체

                다른 성향의 버젼으로 가게 될 시 이용된다.


tags: 소스에 의해 최종 빌드된, 바이너리 파일 및 부수 data들이 이곳에 추가되게 된다.

 

이며.., 이것은 svn에서 제안하는 표준적인 관리디렉토리이며 굳이 위 방법대로 사용할 필요는 없다.
프로젝트의 운영상 다른 개념의 디렉토리가 필요하다면 추가하거나, 필요하지 않는 디렉토리는 사용하지
않아도 무방하다.

 
일반적으로 위와같은 레이아웃을 지니게 된다.

자세한 개념은 http://www.pyrasis.com/main/Subversion-HOWTO 이 페이지에 더 자세하게 설명되어

있으니 참조

 

 
필자는 StudyConsole라는 저장소를 만들었으며, 접근할수 있는 url을 위 기능으로
복사후 사용이 가능하다. 해당 url을 웹페이지에 붙이게되면 웹상에서도 view가 가능하니
편리하다.

 

 
윈도우 탐색기에서 svn기능을 사용할수 있는 TortoiseSvn 별도의 설명이 필요
없으니 디폴트로 설치하면 된다.

 

 
Visual Studio의 애드인 기능을 하는 VisualSvn…2003-2010까지 의 vs와
연동이 된다. 역시 별도의 설명이 필요없으니 디폴트 설치…

 

 
모든 솔류션을 다 설치하고 난후 VS를 실행시키면..,Visual SVN이 포함되었다는
로고를 볼수가 있다.

 

 
기존 솔류션을 열고난후, +Add Solution to Subversion기능으로 저장소 연결이 가능
기존 저장소에 연결도 가능하고, 새로운 저장소에 연결도 가능하다.
이전에 이 프로젝트를 위한 저장소를 만들었기때문에 https://maninotebook/svn/StudyConsole
저장소로 연결…..

 


소스제어랑 연결이 되고 나면..,솔류션 탐색기내의 파일들이 주황색으로 표시가 된다.
이것은 svn에 추가가 안되었다는 의미이며…, 빨간색은 파일이 수정됨을 파란색은 소스 변경이 없다는 것을 뜻한다.  사용하다 보면 자연적으로 익히게 되며 일단 추가가 안되었으니…Commit명령을 통해 svn서버에 파일 등록을 한다.

 

 
커밋을 수행하게 되면…, 위와 같은 로그를 남길 수 있는 창이 뜨며 로그를 꼭 남겨야 하며,

그래야 그 해당 버젼의 프로젝트가 어느 사유로 파일이 추가가되었는지 나중에 추적이 가능하다.
물론 로그를 남기지 않고도 커밋이 가능하다.

 

 
커밋이 정상적으로 완료되게 되면…위와 같이… 파란색 아이콘으로 변하게 된다.

 

 
테스트의 목적으로 해당 소스에 라인을 추가한 후 저장을 하게 되면 해당 소스가 변경 되었음을

빨간색 아이콘으로 확인이 가능하다.

 

 
자 이제 변경된 파일의 Diff를 Show Changes를 활용하여 변경된 코드 체크가 가능하다.

 

 

 


 

AnknSvn1은 비주얼 스튜디오의 애드인으로 작동하는 서브버전(Subversion) 클라이언트다.

꽤 오래된 오픈 소스 프로젝트인데 불과 1년 전만 해도 버그가 많았다. 참기 힘들 정도여서 사용하지

않았다. 그러다가 서브버전  최신 릴리즈를 다운로드 받으러 갔다가 AnknSvn 프로젝트 링크를 보고

따라 들어갔다.

 

그런데 이게 웬일? 프로젝트 홈페이지가 COLLABNET2에 연결되어 있었다.

이 회사로 말하자면 서브버전이 지금의 모습을 갖추는데 지대한 공헌을 한 회사가 아닌가?

도메인을 봐선 COLLABNET 사가 이 프로젝트를 지원하는 게 틀림 없었다.

 

일주일 간 AnknSvn을 Visual Studio 2008에 설치해 써 본 감상은 “매우 만족스럽다”.

새 소스코드는 Add해주고, 소스 코드를 지우면 delete 해 준다. 여기까진 이전에도 큰 문제 없었다.

그러나 소스 코드의 경로를 바꿨을 때 기존 경로를 delete하고 새 경로를 Add하는 기능은 예전에 제대로

작동하지 않았던 것이다. Commit이나 Revert야 당연한 기능이겠지만, Pending Changes는 매우

단순하면서 유용한 기능이다. 여태까지 변경한 파일을 한눈에 볼 수 있으니 말이다.

 


 

설정하기

메뉴얼을 보면 TortoiseMerge.exe와 TortoiseDiff.exe를 연동하는 법이4 나와 있다. 그러니 이에 대해선 언급하지 않고 WinMerge5를 외부 Diff 도구로 쓰는 법만 적는다.

 

"C:\Program Files (x86)\WinMerge\WinMergeU.exe" -e -x -ub -dl "%bname" -dr "%yname" "%base" "%mine"  

위의 코드를 [비주얼 스튜디오 - 도구 – 옵션 – Source Control – Subversion]에 적으면 된다.

 


 

문제점

 

안타깝게도 Visual Assist X8과 AnknSvn이 충돌을 일으키는 기능이 하나 있다.

바로 커밋! 커밋할 때 Visual Assist X이 커밋 로그 창에 함수 목록을 보여 주려 하고

이 때문에 글자가 안 써 진다.

 

Visual Assist를 끄던가, 메모장에 로그를 써서 커밋 로그 창에 붙여넣어야 한다.


참조 : http://kaistizen.net/EE/index.php/weblog/comments/ankhsvn/

 

 

 


 

 

 

[ VisualSVN + TortoiseSVN + CommitMonitor 로 버전 관리하기 ]

VisuanSvn : svn 서버
TortoiseSvn : 클라이언트
CommitMonitor : 모니터링 툴
 

1. 서버 : VisualSVN 설치 (비쥬얼 환경 제공)

  * http://www.visualsvn.com/files/VisualSVN-Server-1.5.2.msi

  - SVN의 모든 기능을 이용할 수 있다.
  - apache를 따로 깔지 않아도 된다.
  - 사용자 계정/그룹 관리가 매우쉽다
  - 저장소 및 모듈 관리기능이 쉽다.

 

2. 클라이언트 : 개발자는 Eclipse , 디자이너/기타는 TortoiseSVN로 운영

  * http://nchc.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.5.2.13595-win32-svn-1.5.1.msi

  - 개발자는 알아서 잘 하니 패스 --;;
  - 디자이너는 TortoiseSVN을 설치하고 팀에서 규정된 로컬 경로

     (되도록 서로 로컬패스를 같게 하는것이 좋음)에 check out 시킨다

 

3. 클라이언트 : CommitMonitor 설치 (변경 사항 알리미)

  * http://commitmonitor.googlecode.com/files/CommitMonitor-1.2.1.299.msi

  - 가볍고 빠르고 스마트하다
  - 지정한 시간 주기 별로 지정한 프로젝트에 대하여 commit하는 상황을 트레이 아이콘에서 메세지로

    보여준다

  - 여러개 프로젝트마다 일일히 동기화/업데이트 해야하는 수고를 덜어주며

    여러인원 작업참여시 전체적인 진행상황 파악에 도움이 되다.



참조 : http://www.okjsp.pe.kr/bbs?seq=121059