Posted
Filed under Computer/Linux
자꾸 까먹어서 안되겠다... 쩝....

오늘 미국으로 이사온후에 아직 내 짐들이 도착하지 않아....
작업환경을 다시 구축하다보니... 완전히 다 바뀌어....
시간이 많이 걸린다.

최근에 바뀐 소스를  update시키려고 했더니 예전에 셋팅한것을 다시 복구하는데....
기억은 나지 않고.... ㅠ.ㅠ  인터넷 찾고.... 내가 백업해온것 찾고...

그러나 백업해온것에서 필요한 정보를 찾지못하고.... 정말 1시간정도 갖은 쇼를 한끝에... ㅋㅋ

알게되었다..... 앞으로 또 이런일이 자주 생길텐데....

기록하지 않아 이렇게 또 땀을 흘리며 고생하기 싫어서 좀 적어본다.... ㅋㅋ


svn를 설정할때 ssh를 이용하여 svn를 접속할수가 있다. 물론 svn 서버를 설정해둬야 겠지만...
이 부분에서는 svn 서버 설정은 빼고 이미 되어 있다고 가정하고 해본다.

ssh  kage@svnserver
로 접속하면 svn이 설정된  svn server에 접속이 된다고 가정하자.
그리고 /svn/test/trunk/test 에 소스가 있다고 가정하자.
그러면 다음처럼 해본다.

svn info svn+ssh://kage@svnserver/svn/test/trunk/test

그러면 접속이되어 정보가 보일것이다.

그러면 ssh로 port tunnel을 걸어서 접근을 한다고 해보자. 한번에 svnvers에 접속이 단된다는 가정하에....

ssh로 1234 port를 이용하여 port tunnel을 svnserver로 걸어놨다고 가정해보자.


그럼 자신의 컴퓨터에서 svn를 사용 가능하게 되어 있다면, 자신의 계정에 ".subversion/config" 파일이 존재할것이다.

이때 이 파일을 수정하자.
vi ~/.subversion/config

여기서 "[tunnel]" 부분을 찾아서 바로 밑에 다음을 추가해준다.
abc_test = $TUNNEL_SSH ssh -p 1234

그리고 저장하고 나온후에  svn은 다음처럼 실행한다.

svn info svn+abc_test://kage@localhost/svn/test/trunk/test

여기서 localhost가 되는 이유는 ssh로 port tunnel을 걸어놨기 때문에 localhost로 ssh를 1234번 포트로 시도하면 다른서버를 거쳐 목적지인 svnserver로 접속이 된다. 그래서  localhost가 된다.
2010/08/05 03:38 2010/08/05 03:38
[로그인][오픈아이디란?]
Posted
Filed under Computer/Linux
[] 내 laptop에서 a-host를 거처 svn-host에 있는 svn 서버를 이용하고 싶다.
계정은  kage라고 하자.

내 laptop의 터미널 하나에서 다음 처럼 터널을 뚤어준다.

$ ssh -L10022:svn-home:22 -N -t -x kage@a-host
kage@a-host's password: **********

그리고 다른 터미널(at my laptop) 에서
vi .subversion/config 에서 "[tunnel]부분에 다음처럼 넣어준다.
tunnel_ssh = $TUNNEL_SSH  ssh -p 10022

그리고 svn명령어를 내려본다.
$ svn list svn+tunnel_ssh://kage@localhost/svn/test
kage@localhost's password: ********
test/
trunk/


이렇게 하면된다.

[] 같은 방법으로 ssh tunnel을 다음처럼 열어도 된다.
$ ssh -C -L1234:svn-home:22 kage@a-host
(만약에 background로 실행하고 싶다면 -f 옵션을 준다.)
그외 config와 svn 명령어는 같이 사용하면된다.



[] 이제는 두 컴퓨터를 뚤고 지나가보자.
my laptop -> A -> B -> SVN-SRV

ssh tunnel 을 뚤자.
$ ssh -f -L1234:B:22 kage@A 'sleep 10'; ssh -p 1234 -L4321:SVN-SRV:22 kage@localhost

그리고 다른 터미널(at my laptop) 에서
vi .subversion/config 에서 "[tunnel]부분에 다음처럼 넣어준다.
tunnel_ssh = $TUNNEL_SSH  ssh -p 4321

$ svn list svn+tunnel_ssh://kage@localhost/svn/test
kage@localhost's password: ********
test/
trunk/
2009/09/30 00:32 2009/09/30 00:32
[로그인][오픈아이디란?]
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
[로그인][오픈아이디란?]