svn 접속 자체는 암호화가 되지 않기 때문에 보안이 허술합니다.


안전하게 svn 서버로 접속하기 위해서는 ssh 를 이용하여 접속하는 것이 좋습니다.


즉 ssh 서버를 접속하여, 서버내에서 설정되어 있는 svn repository 를 직접 접근합니다.


만약 ssh 서버 접속할 때, port 가 기본포트(22)가 아닌 경우 다음과 같이 설정합니다.


$ vi ~/.ssh/config  Host MYSVN HostName mysvn.com Port 2222 User MYID


mysvn.com 으로 MYID 를 이용하여, 2222 포트로 접속하도록 설정합니다.


그리고, 다음과 같이 svn 서버에 접속합니다.

$ svn co svn+ssh://MYSVN/home/svn/PROJECT/trunk PROJECT


참고

  • https://unix.stackexchange.com/questions/27143/how-to-configure-svn-ssh-with-ssh-on-non-standard-port


Posted by 집시F

Eclipse 혹은 GDB 에서 STL vector, map 과 같은 container class 의 데이터를 확인하기 힘듭니다.

내부적인 데이터구조 및 포인터로 인해서 실제 데이터는 확인하기 어렵습니다.


이를 쉽게 열람이 가능하도록 GNU 에서 배포된 도구가 있습니다.

libstdc++ pretty printer 파이썬 스크립트를 통해서 이 문제를 해결할 수 있습니다.


해당 도구를 /home/MY/stl_pretty 로 받습니다.

$ cd /home/MY
$ svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python stl_pretty


gdb 초기화 파일을 만듭니다.

$ vi ~/.gdbinit


이 파일에 다음과 같이 python 코드를 추가합니다.

python
import sys
sys.path.insert(0, '/home/MY/stl_pretty/libstdcxx/v6')
from printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

파일 경로를 주의해서 지정해야 합니다.


이후에 gdb 명령어를 통해서 에러가 발생하지 않는다면 초기화는 성공한 것입니다.

$ gdb
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) 


Eclipse 를 실행한 뒤에, Window > Preferences > C/C++ > Debug > GDB 에서 GDB command file 항목에 /home/MY/.gdbinit 으로 지정합니다.

이후에 Eclipse 디버깅 화면에서 Variables 창에서 STL container 변수의 데이터 값을 엿볼 수 있습니다.


참고:


Posted by 집시F

svn trunk 의 작업이 어느 정도 완성되면 버전별로 tags 로 남길려고 할 것입니다.

다음 명령어는 버전 0.5를 기록하는 방법입니다.

$ svn copy svn://SERVER/PROJECT/trunk svn://SERVER/PROJECT/tags/0.5

물론, trunk, tags, branches 디렉토리를 svn 저장소를 생성할 때부터 미리 만들어 둬야 합니다.


임시로 branch 를 만들어서 작업하는 것도 마찬가지입니다.

다음은 0.6.1 버전의 branch 를 만들어두고선, 작업을 시작하고자할 때 명령어입니다.

$ svn copy svn://SERVER/PROJECT/trunk svn://SERVER/PROJECT/branches/0.6.1

위와 같이 branch 를 만들고선, 0.6.1 으로 svn 저장소 위치를 바꾸고 작업합니다. (svn 저장소 URL 변경하기)

그리고, 나중에 trunk 에 merge 를 진행하면 됩니다.


참고:


Posted by 집시F

svn 저장소(서버) 위치를 바꾸는 경우가 종종 있습니다.


물론 이 때 바뀐 서버로부터 새로 소스를 내려받을 수도 있습니다.

그러나, 이미 작업중인 소스를 새로 받아서 적용하기에 어려운 경우가 있습니다.


이럴 때는 switch 를 이용해서 현재 작업중인 소스의 svn 저장소 위치만 바꿉니다.

$ svn switch --relocate svn://OLD-SERVER/project/trunk svn://NEW-SERVER/project/trunk


참고


Posted by 집시F

Terminal 에서 svn 명령어를 사용하다보면 다음과 같은 에러 메시지가 발생하는 경우가 있다.

$ svn up
'기본'의 GNOME 키 링 암호: 
svn: GNOME Keyring이 잠겨있어 비대화식 모드로 전환합니다

자동으로 svn 암호를 저장하는 기능이지만, 의외로 불편해서 끄고 싶을 때가 있다.

이럴 때는 다음과 같이 ~/.subversion/config 를 수정하면 된다.

[auth] 
  password-stores =


참고:

Posted by 집시F

ubuntu 패키지에 있는 eclipse 를 설치한 뒤에 실행하면 다음과 같은 오류가 발생합니다.


An error has occurred. See the log file
/home/xxxxxx/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/xxxxxxxxx.log


해당 로그 파일을 열어보면 다음과 같습니다.


java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-3740 in java.library.path
no swt-gtk in java.library.path
.....


해결 방법은 간단합니다. SWT 라이브러리 심볼릭 링크를 만들어주면 됩니다.

32비트 ubuntu 에서는 다음과 같습니다.

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/

64비트 ubuntu 에서는 다음과 같습니다.

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/


참고:

Posted by 집시F

여러가지 방법이 있습니다만,

간단하게 찾은 방법을 적어봅니다.

# du -shc /home/*
1.7G    /home/e****
1.6G    /home/e******
1.6G    /home/g*****
499M    /home/k*****
72K     /home/k*******
316M    /home/k*****
2.5G    /home/n***
2.3M    /home/p*****
399M    /home/p***
8.5G    합계


참고:


Posted by 집시F

json-c 라이브러리를 기준으로 설명합니다.


* git 저장소 복사하기

$ git clone https://github.com/json-c/json-c.git
Cloning into 'json-c'...
remote: Counting objects: 1325, done.
remote: Compressing objects: 100% (701/701), done.
remote: Total 1325 (delta 740), reused 1178 (delta 614)
Receiving objects: 100% (1325/1325), 803.71 KiB | 159 KiB/s, done.
Resolving deltas: 100% (740/740), done.


* branch 확인하기

$ cd json-c
$ git branch -r
  origin/HEAD -> origin/master
  origin/gh-pages
  origin/json-c-0.10
  origin/json-c-0.11
  origin/kdopen-rename_library
  origin/master


* archive 로 압축하기

$ git archive --format tar --output ../json-c-0.11.tar origin/json-c-0.11

tar 포맷으로 상위 디렉토리에 origin/json-c-0.11 에 해당되는 branch 를 archive 로 만드는 명령어이다.

tar 파일을 풀면 서브 디렉토리를 생성하지 않으므로 주의한다. (미리 디렉토리를 만들어두고 그 안에서 압축을 풀어야 한다.)


참고


Posted by 집시F

svn 을 사용하다가 보면, 저장소를 새로 구성하거나, 기존의 저장소의 기록을 다른 저장소에 통합할 필요가 있다.

이럴 때 svnadmin 도구를 사용한다.


svn 의 모든 기록을 dump 파일로 추출한다.

svnadmin dump /home/svn/repo > /tmp/repo.dump


dump 파일을 새로운 저장소에 load 한다.

이 때, parent 경로를 다른 곳으로 지정하면, 기존의 저장소에 통합할 수도 있다.


다음의 예제는 new_repo 저장소에 trunk 라는 parent 경로에 /tmp/repo.dump 를 load 하도록 한다.

(즉 repo 저장소의 기록을 new_repo/trunk 에다가 옮기는 것이다.)

svnadmin load --parent-dir trunk /home/svn/new_repo < /tmp/repo.dump


참고:


Posted by 집시F

http://asbear.tistory.com/50

http://asbear.tistory.com/72

Thank you, asbear!


Posted by 집시F