Sanghoon’s Blog

12월 13, 2007

RecMII

밑에 신청: Research — sanghoon @ 3:48 오후

maximum cycle’s length in all cycle length 

cycle length:
sum latencies of ops in the cycle

12월 8, 2007

What is the difference between an EQ-model and an LEQ-model VLIW?

밑에 신청: Research — sanghoon @ 3:37 오전

• Equals (EQ) Model: Each operation takes exactly its specified
latency. Register values don’t change until operation completes.
– Reduces register pressure because source operands stay
around longer.
– Can’t reduce operation latencies and maintain source code
compatibility.
• Less-Than-or-Equals (LEQ): Operations may take up to their
specified latency
– Destination register contents become unreliable immediately
– Simplifies implementation of precise interrupts
– Can reduce operation latencies and maintain source code
compatibility

12월 5, 2007

ubuntu에 ssh 서버 설정

밑에 신청: Ubuntu — sanghoon @ 6:48 오전

telnet의 경우는 패킷을전송할 때 평문으로 전송을 하며 ssh는 패킷을 암호화해서 전송을 한다. 당연히 telnet의 경우는 보안상 취약하기 때문에 가급적이면 ssh를 사용하는 것이 좋다. 자세한 ssh서버 사용법 및 설정은 아래 사이트를 참조하자.

http://wiki.kldp.org/wiki.php/DocbookSgml/SSH-KLDP

1. 설치

    $ sudo apt-get install ssh

2. 포트 변경

    $ sudo gedit /etc/ssh/sshd_config

# port 22 에서 ‘#’ 를 제거하고 원하는 포트로 변경

3. 데몬 재시작

    $ sudo /etc/init.d/ssh restart

4. 서버 작동 확인

    $ netstat -ntl

tcp6        0        0        :::22(포트번호)       :::*        LISTEN    →   이렇게 뜨면 정상 작동 중

리눅스에서 삼바설치

밑에 신청: Ubuntu — sanghoon @ 5:57 오전

1. 개요

samba는 윈도우와 리눅스간에 파일을 공유 할 수 있는 방법을 제공해 주는 프로그램이다. 설령 여러대의 컴퓨터가 없더라도 현재 국내 특성상 리눅스에서 vmplayer 를 사용해 윈도우를 사용한다면 samba를 이용해 파일공유를 설정하는것은 필수 적인 일이라 할수 있다. 여기서는 우분투 dapper에서의 파일공유설정과 가급적 기본설정을 위주로 설명한다.

2. samba 설치

samba 를 설치한다. apt-get 도 좋고 dpkg -i 도 좋고 adept나 synaptic 도 좋다. 패키지 이름은 samba 이다.

3. 기본설명

우분투 dapper의 경우 samba의 설정 파일은 /etc/samba/smb.conf 이다.
samba 설정이 끝난 이후에 윈도우에서 접근하기 위해선 윈도우 탐색기로 해당컴퓨터를 검색한다. samba의 경우 기본 워크 그룹은 MSHOME 이다. 이 워크 그룹이 잘 보이지 않을때는 윈도우 탐색기에서 ‘\\ip’ 로 접근 할 수 있다.

4. 설정

samba id 만들기

우분투 samba 의 기본설정은 리눅스의 계정id와는 별도로 설정된다. 따라서 samba의 사용자를 다시 설정해 줘야 한다. samba id를 만들때는 사용계정의 id와 같게 만들어 주는게 좋다. 이것은 접속시에 해당 리눅스 계정과 매치되기 때문이다. 즉 자신이 aaa라는 id를 사용하고 있다고 하면 samba id도 aaa로 만들어 주는게 좋다는 것이다. 다음과 같이 id를 만든다.

sudo smbpasswd -a userid

이를 실행하면 passwd를 물어 본다. 윈도우에서 접근시에는 계정패스워드(리눅스 로그인시 패스워드)가 아니라 여기서 입력한 passwd를 사용한다.

5. smb.conf 수정

이제 smb.conf를 수정해 보자. 설정 부분중 Share Difinitions 부분을 찾는다. [home] 부분의 주석을 풀어준다.

[homes]

comment = Home Directories

browseable = no

그리고 그 조금 밑에 다음부분이 있다.

writable = yes

기본은 no로 되어 있는데 yes로 변경하자 그러면 파일 쓰기도 가능하다.

위 의 설정은 자신의 홈디렉토리를 삼바로 공유하겠다는 것이다. 예를 들어 윈도우에서 리눅스로 samba를 통해 접근하면 로그인창이 뜬다. 이때 samba id와 패스워드를 입력하면 된다. 이때 samba id를 aaa로 로그인 했다면 리눅스 계정 aaa의 홈디렉토리 즉 /home/aaa 디렉토리가 자동적으로 공유가 된다. 이 때문에 자신의 주 사용id와 samba id를 같게 만들면 설정이 편하다는 것이다. 아래 설정은 보는바대로 쓰기를 허용하겠다는것이다.

6. 사용하기

윈도우 탐색기에서 MSHOME Workgroup을 찾거나 ‘\\ip’ 로 바로 접근하는것이 가능하다. 접근시 id , passwd 입력창이 뜨면 성공이다. 아까 설정해준 samba의 id, passwd를 입력하여 인증이 성공하면 자신의 home디렉토리와 printer가 보일것이다.

2007/10/21 추가내용

우분투 7.10이 나온 지금 내용을 조금 추가합니다. 새로 설치하고 나서 저의 경우 우분투의 시스템->관리->공유폴더 를 설정하는 것 만으로도 삼바가 작동하더군요(삼바가 설치 안되있으면 설치하겠냐고 물어 봅니다). 이하는 보안강화를 위한 내용입니다.

/etc/samba/smb.conf 파일에서

[global] 부분에

hosts allow = 10.0.0.5

이런식으로 접근 가능한 IP를 지정해 줍니다. 그러면 지정된 IP만 접근이 가능합니다. ‘10.0.0. ‘ 이런식으로 지정해 줄 수도 있습니다. 아니면 특정 IP만 ‘10.0.0.5 10.0.0.6′ 이런식으로 지정도 가능하고요.

그 다음

sudo testparm

이 명령으로 smb.conf 파일의 설정이 틀린곳이 없는지 확인하고

sudo /etc/init.d/samba restart 로 삼바를 재시작 해 줍니다.

error while loading shared libraries

밑에 신청: Tips — sanghoon @ 5:53 오전

내가 library를 내 개인 directory에 설치했을 때 이런 에러가 났다. 해결책은 LD_LIBRARY_PATH에 해당 library directory를 추가하는 것.
예를 들어, ~/lib에 해당 library가 있다면,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/lib이렇게 해 주면 된다.
그전에 컴파일은 잘 된다. 나는 gsl을 ~에 깔았는데,gcc -lgslcblas poissonserial.c -I/home/wsshin/include -L/home/wsshin/lib이처럼 -I 와 -L을 지정해주면 컴파일에는 문제 없다.


from http://home.bawi.org/~wsshin/blog/archives/000291.html

환경변수

밑에 신청: Tips — sanghoon @ 5:52 오전

csh 쉘을 사용한다면
setenv PATH ${PATH}:/usr/lib/

setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:~/lib

Repository

밑에 신청: Research — sanghoon @ 5:51 오전

-posh
…/home/svn/re/tools/posh2.0/
-sesc
…/home/svn/re/tools/esesc/

-benchmark
…/home/svn/re/apps/benchmarks

esesc option

밑에 신청: Research — sanghoon @ 5:50 오전

sample
-sesc=${SESCEXEC} -c=${CONF} -ext=.ext -data=test -key=mytest “filename”

-sesc= ; Simulator executable
-c= ; Configuration file
-ext=s ; Extension to be added to the binary names
-data=s ; Data set [test|train|ref]
-test ; Just test the configuration
-key=s ; Extra key added to result file name
-load=i ; # simultaneous simulations running
-mload=i ; Maximum machine load
-prof=i ; Profiling run
-profsec=s ; Profiling section
-fast ; Shorter marks for fast test
-procs=i ; Number of threads in a splash application
-kinst=i ; Thousands of instructions to simulate at most
-rabbit ; Run in Rabbit mode the whole program
-saveoutput ; Save output to a .out file
-clean ; DELETE all the outputs from previous runs
-condor ; Submit jobs using condor.
-condorstd ; Use condor standard universe.
-yes ; Do not ask for questions. Say all yes
-trace ; Interpret benchmarks as trace files
-help ; Show this help

svn command line

밑에 신청: Tips — sanghoon @ 5:49 오전

프로젝트 소스 파일 액세스에 명령줄 서브버전 사용

명령줄 서브버전 시작

서브버전을 사용하여 버전을 관리하는 개발 프로젝트에 참여하는 경우, 프로젝트 소스 파일에 접근하고 변경하려면 서브버전을 사용해야 합니다. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭하면 온라인으로 소스 코드를 탐색하면서 프로젝트의 디렉토리 구조 및 파일을 볼 수 있습니다.

서브버전 페이지는 branches/, tags/, trunk/의 3개 하위 디렉토리와 리드미(README) 파일로 구성됩니다. 리드미 파일은 서브버전 저장소에 대한 최상위 보기를 제공합니다. 접근 옵션을 클릭하여 서브버전 클라이언트 설정 지침을 볼 수 있습니다. 먼저 로컬 시스템에 서브버전 클라이언트가 설치되어 있어야 합니다.

프로젝트의 로컬 작업 복사본 가져오기: svn checkout

최신 소스 파일의 “작업 복사본”을 가져오려면 소스 파일을 체크아웃, 즉 저장소에서 시스템으로 파일을 복사하는 과정을 거쳐야 합니다. 셸 또는 터미널 클라이언트에서 다음과 같이 입력합니다.

svn checkout https://(projectname).(domain)/svn/(projectname)/(DIR) (projectname) --username [type-user-name-here]프 롬프트가 나타나면 사용자 패스워드를 입력합니다. 이 사이트의 사용자 계정에서 사용하는 패스워드와 같아야 합니다. 디렉토리를 지정하지 않으면 프로젝트 소스 코드 전체가 체크아웃됩니다. ‘trunk/’ 디렉토리에 작업 ‘www/’ 폴더가 있으므로 이 디렉토리를 체크아웃할 수 있습니다.

스위치: --revision (-r) REV, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR기본 작업 주기, 초기 체크아웃, 작업 복사본 참조

참고: 사이트에서 SSL(Secured Socket Layer)이 활성화되어 있지 않은 경우 https 대신 http를 사용하여 Subversion 작업을 수행합니다. 예를 들어 프로젝트 저장소에서 최신 소스 코드를 체크아웃하려면 다음 명령을 사용합니다.

svn checkout https://(projectname).(domain)/svn/(projectname)/(DIR) (projectname) --username [type-user-name-here]

서브버전 저장소에서 파일 관리하기

프 로젝트 저장소의 로컬 복사본을 체크아웃했다면 로컬에서 기존 파일을 편집하고 새 파일과 디렉토리를 만들며 파일을 삭제할 수 있습니다. 모든 변경 사항은 서브버전 저장소로 커밋하기 전까지 프로젝트 파일의 로컬 복사본에만 적용됩니다.

작업 복사본에서 저장소로 파일/디렉토리 추가: svn add

새 파일을 만들고 작업 디렉토리에서 이를 편집한 다음 저장소로 추가하거나, 내용이 있거나 없는 디렉토리를 저장소에 추가할 수 있습니다.

svn add FILENAME/DIR을 사용하면 됩니다.그러면 파일/디렉토리를 작업 복사본으로 추가하고, 저장소에 추가할 일정을 정합니다. 다음 번에 커밋을 수행하면 저장소에 업로드되어 추가됩니다. 추가한 것이 있었으나 커밋하기 전에 마음이 바뀌었다면 svn revert를 사용하여 추가 일정을 취소할 수 있습니다.

스위치: --targets FILENAME, --non-recursive (-N), --quiet (-q), --config-dir arg, --auto-props, --no-auto-props파일/디렉토리 추가 예 참조

개정 및 작성자 정보와 함께 파일 내용 보기: svn blame

다음과 같이 입력하면 지정된 파일에서 작성자 및 개정 정보를 인라인으로 볼 수 있습니다.

svn blame FILENAME각 텍스트 줄의 앞에는 작성자(사용자 이름) 및 해당 줄이 마지막으로 변경된 개정 번호가 주석으로 표시됩니다.

스위치: --revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

파일 내용 보기: svn cat

작업 복사본이 저장소의 버전보다 오래되었거나 로컬 작업 복사본을 수정했을 수도 있습니다. 이 경우, 변경 사항을 커밋하거나 작업 복사본 편집을 결정하기 전에 해당 파일의 내용 차이점을 확인할 필요가 있습니다. svn cat FILENAME을 실행하면 저장소에서 HEAD 개정판을 자동으로 가져옵니다. 이 하위 명령은 파일을 기존 개정 번호의 상태대로 검색하고 이를 화면에 표시할 때 주로 사용합니다. 또는 이 사이트에서 프로젝트의 소스 코드를 탐색하여 동일한 작업을 수행할 수 있습니다.

스위치: --revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 정리하기: svn cleanup

“작업 복사본 잠김” 오류가 발생할 때가 있습니다. 잠금을 해제하고 작업 복사본을 반복적으로 정리하려면 svn update를 사용합니다.

스위치: --diff3-cmd CMD, --config-dir DIRsvn cleanup 참조

작업 복사본 또는 저장소의 파일이나 디렉토리 복사: svn copy

프로젝트에서 기존 문서를 사용해야 하는 경우가 있습니다. 예를 들어, 새로운 내용을 개발하면서 ‘외양’은 그대로 유지하기 위해 기존 HTML 파일의 코드를 참조할 수 있습니다. 파일을 완전히 새로 만들 필요 없이 svn copy를 사용하여 이 파일을 복사하고 다른 이름으로 저장한 다음 그 내용을 변경할 수 있습니다. 저장소에서 로컬 작업 복사본으로, 또는 그 반대로 파일을 복사할 수 있습니다. 또는 로컬 작업 복사본 내부로부터 파일을 복사할 수도 있습니다. 서브버전에서는 저장소 간 복사는 지원하지 않습니다. 그 작업에는 svn copy SRC DST를 사용합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIRsvn copy 참조

로컬 작업 복사본에서 파일이나 디렉토리 삭제하기: svn delete

로컬 작업 복사본에서 불필요한 파일을 삭제하고 싶은 경우가 있습니다. svn delete FILENAME을 사용하면 파일의 삭제 일정을 정합니다. 커밋을 수행해야 저장소에서 실제로 파일이 삭제됩니다.

스위치: --force, --force-log, --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --targets FILENAME, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR

파일간 차이점 보기: svn diff

svn diff를 사용하면 작업 복사본에서 지정된 파일의 로컬 수정 사항을 저장소 버전과 비교하여 표시할 수 있습니다. 명령 프롬프트에서 다음과 같이 입력합니다.

svn diff (파일 경로) (프로젝트의 저장소 URL)예를 들어, 로컬에서 수정된 “index.html” 파일을 프로젝트 저장소의 파일과 비교하려면 다음과 같이 입력합니다.

svn diff $SRC/...../index.html https://(projectname).(domain)/svn/(projectname)/trunk (projectname) --username [type-user-name-here]또는 파일이 있는 디렉토리로 이동하여 다음과 같이 입력합니다.

svn diff (FILENAME)그러면 개정 번호와 함께 차이점이 표시됩니다.

스위치: --revision (-r) REV, --old OLD-TARGET, --new NEW-TARGET, --extensions (-x) "ARGS", --non-recursive (-N), --diff-cmd CMD, --notice-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --no-diff-deleted, --config-dir DIR이력 검사, svn diff 참조

로컬 시스템에서 정리된 디렉토리 트리 내보내기: svn export

로컬 시스템상의 버전 없는 복사본, 즉 정리된 트리 디렉토리를 프로젝트 저장소나 로컬 작업 복사본 내부로부터 추출할 수 있습니다. 이전 개정판의 정리된 디렉토리를 저장소로부터 가져오려면 다음과 같이 입력합니다.

svn export [-r REV] [PATH]URL 에 의해 지정된 저장소로부터 개정 REV가 지정되었다면 그곳에서 내보내거나, 아니면 HEAD에서 PATH로 정리된 디렉토리 트리를 내보냅니다. PATH가 생략되면 URL의 마지막 컴포넌트가 로컬 디렉토리 이름으로 사용됩니다. 또는 로컬 시스템 내부에서 PATH1 작업 복사본에서 PATH2 작업 복사본으로 정리된 디렉토리 트리를 내보낼 수도 있습니다. 그러면 로컬 변경 사항이 모두 보존되지만, 버전 관리 대상 파일은 복사하지 않습니다. 이 작업을 수행하려면 다음과 같이 입력합니다.

svn export PATH1 PATH2스위치: --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

Subversion에 관한 도움말 가져오기: svn help

서브버전은 명령줄 인터페이스 내부에서 도움말을 제공합니다. 특정 하위 명령에 대한 도움말을 확인하려면 다음과 같이 입력합니다.

svn help [SUBCOMMAND...]스위치: --version, --quiet (-q)

SVN 저장소로 변경 사항 보내기

파일 및/또는 디렉토리를 로컬에서 변경했다면 SVN 저장소로 이 변경 사항을 커밋해야 합니다.

변경 사항 커밋하기: svn commit

공유 저장소로 변경 사항을 커밋하려면 다음과 같이 입력합니다.

svn commit -m "여기에 근거 입력"파 일 변경 사항에 대한 설명을 포함시키지 않으면 svn이 커밋 작업을 완료하기 전에 파일 편집기를 호출하여 이를 추가하라는 메시지가 표시되며, 그렇지 않으면 “커밋 실패” 오류가 발생합니다. 모든 커밋은 자동으로 기록되어 프로젝트의 커밋 메일링리스트에 게시됩니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --targets FILENAME, --force-log, --username USER, --password PASS, --no-auth-cache, --non-interactive, --encoding ENC, --config-dir DIR변경 사항 커밋, editor-cmd 참조

프로젝트 저장소에서 버전 없는 파일 또는 트리 가져오기: svn import

svn import를 사용하여 버전 없는 파일이나 트리를 프로젝트 저장소로 반복 커밋할 수 있습니다. 필요에 따라 저장소에 상위 디렉토리가 만들어집니다. 다음 명령은 PATH에서 URL로 복사본을 반복 커밋합니다. PATH가 생략되면 “.”로 가정합니다.

svn import [PATH] URL예: 로컬 시스템의 파일로 버전 없는 디렉토리 (D)를 만드는 경우. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭하여 서브버전 페이지로 이동합니다. 소스 코드 탐색 아래에 NEWDIR이 나열되지 않습니다. 프로젝트 저장소로 D를 가져오려면 다음과 같이 입력합니다.

svn import -m "여기에 메시지 입력" D http://(projectname).(domain)/svn/(projectname)/NEWDIR페이지를 새로 고칩니다. 소스 코드 탐색 아래에 D가 나열됩니다. 파일을 보려면 D를 클릭합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR, --auto-props, --no-auto-props

작업 복사본에서 경로 정보 인쇄하기: svn info

어떤 하위 명령을 실행하기 위해 작업 복사본의 파일에 대한 특정 정보가 필요할 때가 있습니다. svn info라 고 입력하면 작업 복사본의 작업 복사본 경로에 있는 항목에 대해 경로, 이름, URL, 개정판, 노드 종류, 마지막 변경 시점, 작성자, 마지막으로 변경된 개정 번호, 마지막 변경일, 마지막으로 갱신된 텍스트, 마지막으로 갱신된 등록 정보, 체크섬 등 유용한 모든 정보가 인쇄됩니다.

스위치: --targets FILENAME, --recursive (-R), --config-dir DIR

저장소에서 디렉토리 항목의 목록 보기: svn list

어떤 프로젝트에 대한 작업을 시작하거나 ‘작업 복사본’을 가져오기 전에 그 내용, 즉 프로젝트 저장소에 있는 디렉토리와 파일을 확인하거나 로컬 작업 복사본에 있는 디렉토리 항목을 보고 싶은 경우가 있습니다. 명령 프롬프트에서 svn list [TARGET...]이라고 입력하면 똑같은 내용을 볼 수 있습니다. 또는 프로젝트 내부에서 소프트웨어 구성 관리 페이지로 이동하여 해당 프로젝트의 저장소를 볼 수도 있습니다.

스위치: --revision (-r) REV, --verbose (-v), --recursive (-R), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

커밋 로그 메시지 보기: svn log

다음과 같이 입력하여 ‘작업 복사본’ 또는 저장소에 있는 파일/디렉토리의 개별 파일/디렉토리 이력을 조회하면서 개정 정보를 추적할 수 있습니다.

svn log [PATH]그 러면 가장 최신 개정판을 시작으로 파일/디렉토리 개정 정보가 표시되며, 커밋 메시지와 작성자 이름 등의 정보가 함께 표시됩니다. 또는 이 사이트를 사용하여 프로젝트 저장소에 있는 개별 파일의 커밋 로그 메시지를 볼 수 있습니다. 프로젝트의 왼쪽 탐색 창에서 서브버전 링크를 클릭합니다. 서브버전 페이지가 나타납니다. 소스 코드 탐색 아래 디렉토리에 있는 파일을 검색하고 파일 이름을 클릭합니다. 그러면 커밋 로그 메시지와 함께 페이지가 표시됩니다.

스위치: --revision (-r) REV, --quiet (-q), --verbose (-v), --targets FILENAME, --stop-on-copy, --incremental, --xml, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIRsvn log 참조

변경 사항 병합하기: svn merge

svn merge 명령을 실행하면 서브버전 기능을 통해 저장소에서 가장 최신 버전의 파일을 작업 복사본으로 병합할 수 있습니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --force, --dry-run, --diff3-cmd CMD, --ignore-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIRsvn merge, 충돌 해결(다른 변경 사항 병합), 브랜치 및 병합: 일반적인 병합 사용 사례, 병합 베스트 프랙티스 참조

저장소를 이용한 작업하기

새 디렉토리 만들기: svn mkdir

작업 디렉토리에서 새 디렉토리를 만들려면 다음과 같이 입력합니다.

svn mkdir PATH프로젝트 저장소에서 새 디렉토리를 만들려면 다음과 같이 입력합니다.

svn mkdir URLPATH 또는 URL의 마지막 컴포넌트에 의해 디렉토리 이름이 결정됩니다. 저장소에서 디렉토리는 즉시 커밋이 수행되면서 만들어지므로 커밋 메시지가 필요합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

파일 또는 디렉토리 이동: svn move

svn move SRC DST를 사용하면 작업 복사본이나 프로젝트 저장소 내부에서 파일이나 디렉토리를 옮길 수 있습니다. 이 명령은 svn copy 다음에 svn delete를 실행하는 것과 동일한 결과를 가져옵니다. 작업 복사본 내부에서 파일이나 디렉토리를 이동할 경우, 파일이나 디렉토리가 옮겨지고 다음 커밋에 추가되도록 일정이 계획됩니다. 프로젝트 저장소 내부에서 파일이나 디렉토리를 옮기면 자동으로 커밋이 수행되므로 커밋 메시지가 필요합니다.

스위치: --message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR

등록 정보 관리하기

서 브버전에는 그 동작을 결정짓거나 영향을 미치는 등록 정보가 많습니다. 파일의 내용처럼 등록 정보 변경 사항도 수정, 커밋, 취소할 수 있습니다. 로컬 작업 복사본이나 프로젝트 저장소에서 파일, 디렉토리 또는 개정판의 등록 정보를 삭제, 편집, 인쇄, 나열하거나 설정할 수 있습니다.

속성, 버전 없는 속성, 메타데이터 속성, svn propdel, svn propedit, svn propget, svn proplist, svn propset, Hook 스크립트 참조

충돌 해결: svn resolved

로컬 작업 복사본을 갱신하는 중 충돌이 발생할 수 있습니다. 이 경우 충돌을 해결해야 합니다. 충돌 해결 후 svn resolved PATH...라고 입력하여 충돌이 ‘해결’되었음을 작업 복사본에 알립니다.

스위치: --targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

충돌 해결(다른 변경 사항 병합) 참조

변경 사항 취소하기: svn revert

서브버전에서 svn revert PATH...는 Windows의 Ctrl Z와 같습니다. 여러 가지 옵션이 있습니다.

  • 로컬 작업 복사본에서 로컬 변경 사항을 취소하여 충돌된 상태를 해결합니다.
  • 작업 복사본에서 어떤 항목의 내용 및 그 속성 변경 사항을 취소합니다.
  • 파일 추가, 파일 삭제와 같은 일정 계획 작업을 수행합니다.

참고: 대상을 지정하지 않으면 작업 복사본의 변경 사항을 잃게 될 수 있습니다.

스위치: --targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR

파일/디렉토리의 상태 가져오기: svn status

버전 관리에서는 변경 사항을 프로젝트 저장소로 커밋하기 전에 검토하는 것이 좋습니다. svn status를 실행하여 작업 복사본의 파일 및 디렉토리 상태를 인쇄할 수 있습니다. 이 명령을 실행하면 코딩된 8개 열이 출력됩니다. 열마다 긴 설명이 붙어 있으므로 이 출력에서 ‘오류 없는’ 결론을 이끌어내기는 어렵습니다. 이 작업을 더 간단하게 해결하고 예를 함께 볼 수 있으려면 명령 프롬프트에서 svn help status라고 입력합니다.

스위치: --show-updates (-u), --verbose (-v), --non-recursive (-N), --quiet (-q), --no-ignore, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir

변경 사항 검사를 확인하십시오.

작업 복사본 전환하기: svn switch

svn switch URL [PATH]를 사용하면 새 URL을 미러링하도록 작업 복사본을 갱신할 수 있습니다. 작업 복사본 또는 그 일부를 새 브랜치로 이동할 수 있습니다. 이 하위 명령을 브랜치 바로가기로 사용할 수 있습니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --relocate, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 전환, 브랜치 및 병합svn switch 참조

작업 복사본 갱신하기: svn update

버전 관리에서는 다음 명령을 사용하여 로컬 작업 복사본을 프로젝트 저장소로 매일 갱신하는 것이 좋습니다.

svn update [PATH...]

갱신된 항목은 다음과 같이 표시되는 현재 상태와 함께 나열됩니다.

  • A = 파일이 작업 복사본에 추가되었습니다.
  • U = 파일이 작업 복사본에서 갱신되었습니다.
  • D = 파일이 작업 복사본에서 삭제되었습니다.
  • R = 파일이 작업 복사본에서 대체되었습니다.
  • G = 파일이 성공적으로 병합되었습니다.
  • C = 파일에 병합 충돌이 발생해 수동으로 해결해야 합니다.

스위치: --revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR

작업 복사본 갱신, 수동 병합 충돌 참조

브랜치 및 태그

일 반적으로 프로젝트의 트렁크는 주 개발 라인에서 사용되지만, 브랜치는 그 라인의 변형에서 사용됩니다. 브랜치는 진행형 개발 라인입니다. 소프트웨어 개발 생명주기에서 어떤 소프트웨어 제품의 출시가 예정된 가운데 테스트 담당자들이 예비 릴리즈를 대상으로 작업을 수행하도록 허용함으로써 테스트와 상관 없이 새로운 개발이 진행되게 할 때 브랜치를 자주 사용합니다. 또한 브랜치는 실험적인 작업을 수행하거나 코드 전체를 재작성할 때에도 사용됩니다. 태그는 파일 개정판을 함께 묶어서 그룹으로 만드는 방법입니다. 브랜치와 태그는 svn copy 하위 명령을 사용하여 만들지만, 이 두 가지는 서로 다른 개념입니다. 브랜치는 여러 개정판을 나타내지만 태그는 하나의 개정판을 나타냅니다.

이 사이트에서 호스팅되는 프로젝트의 서브버전 저장소에서는 소스 파일의 브랜치 및 태그 작업을 지원합니다. 태그와 브랜치는 서브버전에 대한 손쉽고 실용적인 ‘복사’ 작업입니다.

브랜치 또는 태그 프로젝트 파일을 만들려면 다음과 같이 입력합니다.

svn copy SRC DST -m "여기에 메시지 입력"

브랜치 및 병합 참조

from:

http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.ko#workwithfiles

svn

밑에 신청: Tips — sanghoon @ 5:45 오전

SVN 사용법

용어 설명
저장소 : 리포지토리(Repository)라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장이 됩니다. 그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장됩니다. 네트워크를 통해서 여러 사람이 접근 할 수 있습니다. 버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있으며 Subversion은 Berkeley DB를 사용합니다. 한 프로젝트 마다 하나의 저장소가 필요합니다.

리비전(Revision) : 소스 파일등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다. 저장소에 저장된 각각의 파일 버전이라 할 수 있습니다. Subversion의 경우 파일별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다. 리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.

trunk : 단어 자체의 뜻은 본체 부분, 나무줄기, 몸통 등 입니다. 프로젝트에서 가장 중심이 되는 디렉토리입니다. 모든 프로그램 개발 작업은 trunk 디렉토리에서 이루어집니다. 그래서 위의 구조에서 trunk 디렉토리 아래에는 바로 소스들의 파일과 디렉토리가 들어가게 됩니다.

branches : 나무줄기(trunk)에서 뻗어져 나온 나무 가지를 뜻합니다. trunk 디렉토리에서 프로그램을 개발하다 보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 따로 개발해야 할 경우가 생깁니다. 프로젝트안의 작은 프로젝트라고 생각하면 됩니다. branches 디렉토리 안에 또 다른 디렉토리를 두어 그 안에서 개발하게 됩니다.

tags : tag는 꼬리표라는 뜻을 가지고 있습니다. 이 디렉토리는 프로그램을 개발하면서 정기적으로 릴리즈를 할 때 0.1, 0.2, 1.0 하는 식으로 버전을 붙여 발표하게 되는데 그때그때 발표한 소스를 따로 저장하는 공간입니다. 위에서 보면 tags 디렉토리 아래에는 버전명으로 디렉토리가 만들어져 있습니다.

명령어 의미
Import : svn import sampledir svn+ssh://svn-domain/svn/sample/trunk
맨 처음 프로젝트 시작할때 저장소에 등록하는 명령어 한 번 하고 나면 쓸일이 잘 없을 듯.

Checkout : svn checkout svn+ssh://svn-domain/svn/sample/trunk sample
저장소에서 소스를 받아 오는 명령어. 받아온 소스에는 소스 뿐만이 아니라 버젼관리를 위한 파일도 같이 받아 온다. 지우거나 변경시 저장소와 연결 불가능

Export : svn export svn+ssh://svn-domain/svn/sample2/trunk sample
체크아웃과는 달리 버젼관리 파일을 뺀 순수한 소스만 가져오는 명령어 마지막에 사용.

Commit : svn commit
체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 명령어. Revision이 1 증가 한다.

Update : svn update
체크아웃 해서 받은 소스를 최신의 소스로 업데이트 하는 명령어. 소스 수정이나 Commit 하기전에 한 번씩 해줘야 할 듯. 잘 못하면 소스 망치는 경우가 있을 듯.

Log : svn log
저장소에 어떠한 것들이 변경 되었는지 확인 할 수 있는 log 명령어

Diff : svn diff –revision 4 sample.c
diff 명령은 예전 소스 파일과 지금의 소스 파일을 비교해 보는 명령어

Blame : svn blame sample.c
Blame은 한 소스파일을 대상으로 각 리비전 대해서 어떤 행을 누가 수정했는지 알아보기 위한 명령어

lock : svn lock hello.c
파일에 락을 걸어 락을 건 사용자만이 수정할 수 있게 해주는 명령어. 해제는 svn unlock.
왜 파일에 락을 걸었는지 로그를 기록 할 수 있다.

Add : svn add hello.c
새 파일을 만들었을 경우에 파일을 추가 해주는 명령어. 그 뒤엔 꼭 svn commit를 꼭 해줘야 한다.
새 파일을 생성해서 올릴 때에도 꼭 add를 해줘야 함. 안해주면 commit을 해도 안 올라감.

파일 백업및 복구
dump : svnadmin dump sample > sample.dump
load : svnadmin load sample < sample.dump
새 파일을 만들었을 경우
1. svn add filename.*
2. svn ci filename.*

그냥 기존 소스 수정할 경우
1. svn ci filename.*

항상 svn update는 꼭 해주자

svn status : 자신이 수정하고 있는 파일의 상태를 알려주는 명령어

from http://timehappy.net/tt/809

다음 페이지 »

Blog at WordPress.com.