Header

  1. View current page

    재선아빠님의 노트

Profile_image?t=1224119607&type=big
11

Subversion

SCM (Source Code Management) 툴인 Subversion 에 대해서 사용법 및 여러가지 정보를 정리한 페이지임. CVS 의 단점을 개선한 버젼이고 향상된 속도 및 여러가지 장점이 많은 관계로 CVS -> Subversio 으로 업데이트 이전함.

Subversion 관리하기

백업 / 복구

  1. svnadmin dump -q d:/svn > svn.dump ( svn 저장소를 svn.dump 파일로 백업한다 )

  2. svnadmin load d:/svn < svn.dump ( 복구 한다 )

SVN Install on windows

준비

  1. Subversion, Apache2, Python, Python Win32 Extension, Mod_python 윈도우 버젼을 설치한다. 인스톨러 형식이므로 다운받아서 설치하도록 한다. (주의 Python2.4 버젼에 대한 윈도우용 mod_python 이 정상적으로 동작하지 않기 때문에 Python 은 2.3.5 를 설치한다.)

  2. pySqlite 모듈은 pysqlite-1.0.1 버젼을 설치한다. 윈도우즈 시스템의 경우 import sqlite 부분에서 오류가 나기 때문.

  3. svn-win32-1.0.*_py.zip을 압축을 풀면 나오는 libsvn, svn은 C:\Python23\Lib에 복사한다.

저장소설치

  • 버클리 DB 형식이 아닌 파일시스템형태로 저장소를 생성한다.
  • svnadmin create d:\svsrepo --fs-type fsfs
    
    

아파치 설정을 한다

  • LoadModule dav_module modules/mod_dav.so

    LoadModule dav_svn_module modules/mod_dav_svn.so

    <Location /svn/svnrepo>

    DAV svn

    SVNPath d:\svnrepo

    </Location>

    
    

테스트

  • http://222.106.70.174/svn/svnrepo 로 접속해본다.

    svn log http://222.106.70.174/svn/svnrepo 명령을 날려본다.

    
    

아파치를 이용한 권한설정

  • 최초 패스워드 파일 생성

    %APACHE_HOME%/conf/htpasswd -c passwd sampleuser

    
    
    이미 생성된 패스워드 파일에 계정 추가시

    htpasswd 패스워드파일명 사용자ID

    
    
    httpd.conf 파일 수정

    <Location /svn/svnrepo>
    DAV svn
    SVNPath d:\svnrepo
    AuthType Basic
    AuthName "pyrasis's Repository"
    AuthUserFile c:\Program Files\Apache Group\Apache2\conf\passwd
    Require valid-user
    </Location>

SVN 자체 서버를 이용한 인증

  • svnserve로 서버를 실행 시키면 3690번의 포트가 열림.

    svnserve -d -r d:\svnrepo

    
    
    svnserve에서 ID로 사용자 인증

    d:\svnrepo\conf\svnserve.conf 파일에 설정

    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    realm = Component Team's Repository

    d:\svnrepo\conf\passwd 파일에 사용자 계정 설정
    ID=PASSWD 형식으로 저장 현재까지는 암호화된 패스워드는 지원 안함.
    [users]
    sampleuser = 02030104


CVS to SVN Guide

  • GNU sort를 사용하므로 http://unxutils.sourceforge.net/ 에서 win32용을 받고 압축을 풀어준 다음 마찬가지로 실행파일이 있는 wbin 디렉터리를 path에 추가한다. 또는 sort.exe를 cvs2svn과 함께 둔다.

  • GNU sort 를 사용하지 않고 기본적으로 윈도우에 있는 sort 를 사용하려면 cvs2svn 파일을 열어서 sort -T 라고 되어있는 부분을 sort /T 로 바꿔준다.

  • cvs2svn을 바로 실행할 수 없었으므로 cvs2svn.py로 이름을 바꾼다.
  • 명령 프롬프트에서 Python\Scripts 로 이동해 실행한다.
  • RCS의 co를 사용하지 않고 CVS를 사용하려면 --use-cvs 옵션을 준다.

  • RCS의 co을 사용하는 것이 더 빠르고 cvs2svn 에서도 권장한다. RCS 이걸 받아서 사용하자.

  • 변환절차
       1.  Remember to Make a backup before starting. Never run cvs2svn on a live CVS repository--always work on a copy of your repository.
    2. Run cvs2svn against the modules you want converted

    # Copy the CVS modules into a temporary cvs repository.
    # This is not absolutely necessary, but it's for safety's sake.
    $ mkdir ~/newcvsrepo
    $ mkdir ~/newcvsrepo/CVSROOT # needed by cvs2svn
    $ cp -r /oldcvsrepo/module ~/newcvsrepo

    # Create a dumpfile containing the new CVS repository contents
    $ mkdir ~/svndump; cd ~/svndump
    $ cvs2svn --dump-only ~/newcvsrepo


    3. Import the dump into your Subversion repository

    # Make a directory for the project.
    $ svn mkdir file:///path/to/svnrepos/projectA -m "Added projectA directory."

    # Use "svnadmin load" to load the dumpfile.
    $ cd ~/svndump
    $ svnadmin --parent-dir projectA load /path/to/svnrepo < cvs2svn-dump
  • 기본적으로는 버클리 DB를 사용해 저장소를 만들므로 저장소를 fsfs 타입으로 사용하려면 저장소를 먼저 만든 후에 변환을 해야 한다.
    svnadmin create d:\svnrepo --fs-type fsfs
    cvs2svn.py --existing-svnrepos -s D:\svnrepo d:\cvsrepo\prj_a
  • CVS 에서 한글을 사용했다면 인코딩 문제로 SVN으로 변환하면 한글이 모두 깨어진다. 이는 기본적으로 CVS 로그 정보를 ASCII로 간주하기 때문인데 어쨌거나 로그 정보를 볼 수 없어 매우 치명적이다. 게다가 한글 이름의 파일도 변환하지 못 한다.
    cvs2svn.py --existing-svnrepos --encoding=mbcs -s x:\svnrepo x:\cvsrepo\prj_a

CVS2SVN

  1. cvs2svn 파일 압축풀고 설치 : python setup.py install
  2. Scripts/cvs2svn 파일 내용중 오류수정 : 파일내용중에서 sort -T 를 윈도우 버젼에 맞게 sort /T 로 수정해줘야 정상적으로 3단계를 처리하고 통과한다.
  3. mkdir svndump : 변환을 수행을 빈 디렉토리 하나를 생성한다.
  4. cd svndump : 디렉토리로 이동.
  5. [바로변환실행] cvs2svn.py --existing-svnrepos --encoding=mbcs --use-cvs -s d:\svnrepo d:\cvsrepo
    • [svn저장소를 생성하면서 바로변환] cvs2svn.py --fs-type=fsfs --encoding=mbcs --use-cvs -s d:\svnrepo d:\cvsrepo [덤프파일생성] cvs2svn.py --use-cvs --dump-only --encoding=mbcs --dump-file d:\cvsdump.dump d:\cvsrepo
    • - 이단계에서 오류가 발생했다면 --use-cvs 파라미터를 쓰지않고 RCS co 을 사용해보도록 한다. 윈도우용 RCS 모듈을 내려받아서 현재 실행하는 디렉토리에 co.exe 모듈을 복사하고 --use-cvs 파라미터를 제거하고 다시 실행해본다.
  6. cvs2svn.py --dry-run -s d:/svnrepo d:/cvsrepo
  7. cvs2svn.py --existing-svnrepos --use-cvs -s d:/svnrepo d:/cvsrepo
  8. cvs2svn.py --existing-svnrepos --use-cvs --encoding=latin1 -s d:/svnrepo d:/cvsrepo

Problem 1

cvs2svn.py 실행중 이런 메세지가 나오는 경우 "RCS/1.1,v: "No such file or directory"

현재 디렉토리에 이미 해당 파일이 존재하는 경우이다. 현재 cvs2svn.py 를 실행하고 있는 디렉토리에 생성된 파일들을 삭제하고 다시 실행하면된다.

see http://www.phy.bnl.gov/~e910/html/doc/cvs/faq_cvs.html#sc5b6

Problem 2

윈도우용 Python2.3 에는 subprocess.py 라는 모듈이 존재하지 않는다. cvs2svn.py 에서 해당 모듈을 사용하므로 Python2.3 용 subprocess 모듈을 받아서 설치하자.

Problem 3

--use-cvs 파라미터를 사용해서 처리하는 동안 체크아웃시 문제가 계속 발생한다면, 해당 CVS 의 파일들을 일일이 손보기 곤란하므로 RCS 용 co 를 사용하도록 한다. 윈도우용 RCS 모듈을 내려받아서 cvs2svn.py 를 실행하는 디렉토리에 co.exe 파일을 카피하고 다시 실행해보자.

TRAC

GUI 클라이언트 프로그램

Subversion 클라이언트 프로그램 소개.

  1. TortoiseSVN : MS Windows용 GUI 클라이언트 프로그램. CVS GUI 클라이언트 프로그램으로 유명한 TortoiseCVS와 거의 같은 인터페이스를 가지고 있음. http://tortoisesvn.tigris.org

  2. Ankhsvn : Visual Studio .NET 애드인 형식의 Subversion 클라이언트 프로그램. VS.NET과 통합성이 매우 높다. VS.NET의 솔루션 뷰에서 커밋, 업데이트 등의 작업이 가능하며 솔류션 뷰의 각 파일에 수정되었거나 수정되지 않은 파일의 상태를 표시해줌. http://ankhsvn.tigris.org

  3. RapidSVN : 크로스 플랫폼 Subversion 클라이언트 프로그램. Windows, 리눅스, BSD의 X Window에서 사용할 수 있음. http://rapidsvn.tigris.org

Links

  1. Subversion HOWTO-KLDP

  2. Subversion setup - serious-code.net

  3. SVN Srever Manager

  4. Subversion With ViewCVS For Windows

  5. Subversion HOWTO-Korean

  6. SVN Service Wrapper for Windows

  7. CVS2SVN

  8. cvs2svn: Converting a CVS repository to Subversion

  9. CVS2SVN apache guide

개발자

  1. TortoiseCVS 를 설치해서 사용

서버관리자

  1. svnManager 프로그램을 사용하면 편리하게 서비스 실행시킬 수 있음.

PQM

httpd.conf sample (silmido)

History

Last edited on 03/14/2007 17:02 by JasonPA

Comments (0)

You must log in to leave a comment. Please sign in.