Subversion
SCM (Source Code Management) 툴인 Subversion 에 대해서 사용법 및 여러가지 정보를 정리한 페이지임. CVS 의 단점을 개선한 버젼이고 향상된 속도 및 여러가지 장점이 많은 관계로 CVS -> Subversio 으로 업데이트 이전함.
Subversion 관리하기
백업 / 복구
-
svnadmin dump -q d:/svn > svn.dump ( svn 저장소를 svn.dump 파일로 백업한다 )
-
svnadmin load d:/svn < svn.dump ( 복구 한다 )
SVN Install on windows
준비
-
Subversion, Apache2, Python, Python Win32 Extension, Mod_python 윈도우 버젼을 설치한다. 인스톨러 형식이므로 다운받아서 설치하도록 한다. (주의 Python2.4 버젼에 대한 윈도우용 mod_python 이 정상적으로 동작하지 않기 때문에 Python 은 2.3.5 를 설치한다.)
-
pySqlite 모듈은 pysqlite-1.0.1 버젼을 설치한다. 윈도우즈 시스템의 경우 import sqlite 부분에서 오류가 나기 때문.
- 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
- cvs2svn 파일 압축풀고 설치 : python setup.py install
- Scripts/cvs2svn 파일 내용중 오류수정 : 파일내용중에서 sort -T 를 윈도우 버젼에 맞게 sort /T 로 수정해줘야 정상적으로 3단계를 처리하고 통과한다.
- mkdir svndump : 변환을 수행을 빈 디렉토리 하나를 생성한다.
- cd svndump : 디렉토리로 이동.
- [바로변환실행] 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 파라미터를 제거하고 다시 실행해본다.
- cvs2svn.py --dry-run -s d:/svnrepo d:/cvsrepo
- cvs2svn.py --existing-svnrepos --use-cvs -s d:/svnrepo d:/cvsrepo
- 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 클라이언트 프로그램 소개.
-
TortoiseSVN : MS Windows용 GUI 클라이언트 프로그램. CVS GUI 클라이언트 프로그램으로 유명한 TortoiseCVS와 거의 같은 인터페이스를 가지고 있음. http://tortoisesvn.tigris.org
-
Ankhsvn : Visual Studio .NET 애드인 형식의 Subversion 클라이언트 프로그램. VS.NET과 통합성이 매우 높다. VS.NET의 솔루션 뷰에서 커밋, 업데이트 등의 작업이 가능하며 솔류션 뷰의 각 파일에 수정되었거나 수정되지 않은 파일의 상태를 표시해줌. http://ankhsvn.tigris.org
-
RapidSVN : 크로스 플랫폼 Subversion 클라이언트 프로그램. Windows, 리눅스, BSD의 X Window에서 사용할 수 있음. http://rapidsvn.tigris.org
Links
개발자
- TortoiseCVS 를 설치해서 사용
서버관리자
- svnManager 프로그램을 사용하면 편리하게 서비스 실행시킬 수 있음.
PQM
httpd.conf sample (silmido)
History
Last edited on 03/14/2007 17:02 by JasonPA
Comments (0)