Posted
Filed under Computer/Linux

reference : http://subversion.tigris.org/

CVS를 사용하다가 SVN으로 바꿔봤다.
CVS에서 약간 있었으면 하는 불편함이 SVN에서 많이 해결된듯 하다.
처음에는 CVS에 익숙해 있어 그런지 뭔가 2% 부족해보이고 불편했으나 사용하다 보니 편리한것 같다.

install 하면서 경험을 잊어버리기 전에 잠시 끄적여본다.

install :
svn을 설치하려면 sqlite(http://www.sqlite.org/download.html) 라이브러리가 필요하다.
svn를 설치하기전에 sqlite를 다운받아 설치를 먼저 해준다.
mkdir -p /usr/local/sqlite/3.6.16
./configure --prefix=/usr/local/sqlite/3.6.16
make
make install
vi /etc/ld.so.conf.d/sqlite.conf
------------------------------
/usr/local/sqlite/3.6.16/lib
------------------------------
ldconfig

그리고 svn 을 압축 풀은곳에 들어가 다음처럼 해준다.
svn을 /usr/local/svn에 설치한다고 할때
mkdir -p /usr/local/svn
./configure --prefix=/usr/local/svn --with-sqlite=/usr/local/sqlite/3.6.16
make
make install

svn용 data가 저장될 곳을 만들어준다.
useradd -d /data/svn -m svn
(계정을 그냥 만들고 mkdir -p /data/svn 으로 해준다.)
svn 계정으로들어간다.
su - svn

svn용 daemon을 띄워준다.
export SVN_EDITOR=/usr/bin/vim
/usr/local/svn/bin/svnserve -d -r /data/svn

svn이 잘 떠있는지 process를 확인해준다.
netstat -a |grep svn
tcp        0      0 *:svn                   *:*                     LISTEN 


svn에 사용할 DB를 만들어준다.
버클리 DB를 쓸경우에)
svnadmin create --fs-type bdb  [db name]
일반 파일 시스템 DB를 쓸경우에
svnadmin create --fs-type fsfs [db name]

예로 일반 파일 시스템  DB test로 만든다 하자.
svnadmin create --fs-type fsfs test

이제 기본적인 설정을 모두 끝났다.
svn을 사용할 사용자라면.
svn 패스와 sqlite 라이브러리 패스를 잡아준다.
계정의 .bashrc 파일에 다음을 추가한다.
export SVN_EDITOR=/usr/bin/vim

일반적은 svn 사용법은 다음과 같다.
svn <command> svn+ssh://<id>@<hostname>/<svn_home_절대_path>/<db_name>
여기서 hostname은 svn 서버가 설치된 hostname이고 id는 svn 서버가 설치된 서버에 접속가능한 system id이다.

make a directory 'prj1' in DB 'test'
svn mkdir svn+ssh://test@svnserver/data/svn/test/prj1

remove file or directory in DB
svn delete svn+ssh://test@svnserver/data/svn/test/prj1

put data to prj1 from client (first data put DB)
svn import <directory or filename> svn+ssh://test@svnserver/data/svn/test/prj1

show list of directory or files
svn list svn+ssh://test@svnserver/data/svn/test
svn list svn+ssh://test@svnserver/data/svn/test/prj1

get data from svn server for prj1
svn checkout svn+ssh://test@svnserver/data/svn/test/prj1  prj1
checkout 이후에는 svn+ssh://test@svnserver 뒷부분을 사용하지 않아도 된다.
checkout 한 디렉토리에 들어가서 뭔자 작업을 했다면 그냥 명령어만 쓰면된다.
cd <checkout directory>
-work-
svn <command>

update from svn server to client
svn update svn+ssh://test@svnserver/data/svn/test/prj1
svn update

commit to db after modify
svn commit

view log
svn log
svn log --revision 5:19
svn log --revision 5 -v       ( -v  :  detail )
svn log <file or directory>

diff file
svn diff --revision 4 sample.c
svn diff --revision 4:5 sample.c

Lock a file in DB
svn lock sample.c

add file to DB
svn add hello.c
svn commit

move file or directory
svn move <source> <target>
svn commit

export for release
#recently revision
svn export svn+ssh://test@svnserver/data/svn/test/prj1  prj1
#revision 3
svn export --revision 3 svn+ssh://test@svnserver/data/svn/test/prj1 prj1


Revert
svn revert <directory or file>

Dump DB
svnadmin dump <dbname> > dbname.dump

restore DB
svnadmin load <dbname> < dbname.dump

2009/07/03 10:28 2009/07/03 10:28
[로그인][오픈아이디란?]