블로그는 나의 힘!
[ Programing ]/Other2010. 9. 15. 20:01

SVN(Subversion)은 형상관리를 위한 도구이다. 소프트웨어 개발의 버전 관리 시스템이다. 

사용법: svn <subcommand> [options] [args]
Subversion 명령행 클라이언트 버전 1.5.7.
'svn help <subcommand>'를 사용하여 특정 명령에 대하여 도움말을 얻으십시오.
'svn --version'를 사용하여 버전과 원격접속 모듈에 대한 정보를 얻으십시오.
 또는 'svn --version --quiet'를 사용하여 버전 정보만 얻으십시오.

대부분의 하위 명령들은 재귀적으로 수행하면서 파일이나 디렉토리를 인자로 취합니다.
명령들에 인자가 주어지지 않으면 현재 디렉토리를 포함하여 재귀적으로 수행하게 됩니다.


가능한 명령:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)





> svn checkout 저장소URL [PATH...]
checkout 또는 co - 저장소(repository)에서 로컬 작업공간으로 소스를 받아오는 것.

지정된 로컬경로에 저장소의 소스가 복사된다.
경로가 지정안되면 저장소URL의 맨마지막 디렉토리명이 저장될 디렉토리로 사용되어진다.
-r 옵션으로 리비전을 지정한 경우엔 해당 리비전의 소스를 가져온다.

※ -r 옵션
   NUMBER       : 리비전 번호
   { date }         : 리비전이 시작하는 시각
   HEAD            : 저장소의 마지막 리비전
   BASE            : 작업 사본을 꺼내온 리비전
   COMMITTED : BASE 이전에 마지막 커밋된 리비전
   PREV            : COMMITTED의 직전 리비전

예제) svn checkout -r 99 http://repository/src src
        svn checkout http://127.1.1.1/home/src -r HEAD ./src 
        svn checkout --help
설명) 저장소에서 리비전 번호 99의 http://repository/src경로 내의 소스를 가져온다.
        저장소에서 12.7.1.1.1의 /home/src를 ./src 경로로 소스를 가져온다.
        svn의 checkout의 목차 보기.





> svn update [PATH...]
update 또는 up - 저장소(repository)의 최신 내용으로 로컬 소스를 갱신 한다.

기본적으로 최신 리비전을 반영한다.
그러나 -r 옵션으로 리비전을 지정한 경우엔 그 리비전으로 맞춘다.

예제) svn up
        svn up -r 100
설명) 최신 리비전을 반영한다.
        리비전 100번 버전 까지 반영한다.




> svn commit [PATH...]
commit 또는 ci - 로컬에서 수정된 내용을 저장소에 적용시킨다.

기본적으로 이 명령을 내리면 수정 사항을 코멘트할 수 있게 로그 편집기가 실행된다.
lock된 파일이나 디렉토리는 commit성공후 자동적으로 unlock된다.

예제) svn commit -m ./UserInvenHandle.h
설명) UserInvenHandle.h 파일을 저장소에 적용한다.




> svn lock TARGET
lock - 저장소의 파일이나 디렉토리를 잠근다.

lock이 걸린 파일이나 디렉토리는 다른 사용자가 변경하여 commit할 수 없다.
해당 경로의 작업이 너무 방대하여 그 동안 다른 사용자가 수정하지 못하도록 할때 유용.




> svn unlock TARGET
unlock - 저장소의 잠근 파일이나 디렉토리를 풀어준다.


lock의 반대.
기본적으로 lock을 건 사용자가 풀어줘야 한다. 




> svn add PATH...
add - 새 파일이나 디렉토리를 추가한다.

add 명령은 지정된 PATH의 새로운 파일이나 디렉토리를 버전관리 대상에 등록할 뿐이므로,
add후 commit 명령을 수행해야만 실제로 저장소에 해당 파일이 추가된다.




> svn delete PATH...(URL)
delete 또는 del, remove, rm - 파일이나 디렉토리를 제거한다.


delete 명령은 add와 반대로 해당 PATH의 파일이나 디렉토리을 버전관리 대상에서 삭제한다.
역시 commit 명령을 수행해야만 실제로 저장소에서 해당 목록이 제거된다.
URL로 지정했을 경우 해당 목록은 즉시 저장소에서 제거된다.




> svn copy SRC  DST
copy 또는 cp - 로컬 사본이나 저장소 내용을 복사한다.
브랜치(branch)를 만들기 위해 사용.


SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬복사되고 commit시 저장소에 복사 목록이 추가 저장된다.
SRC가 로컬경로이고 DST가 저장소URL일 경우, URL에 복사되고 즉시 commit됨.
SRC가 저장소URL이고 DST가 로컬경로일 경우, 로컬로 checkout하고 commit시 저장소에 해당 사본이 추가.
SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소 내에 브랜치(branch)를 만듬.




> svn move SRC  DST
move 또는 mv, rename, ren - 파일이나 디렉토리의 이름을 바꾸거나 이동시킨다.
이 명령은 copy후 delete와 같다.


SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬로 rename 또는 move되고 commit시 저장소에 반영된다.
SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소에서 rename,move가 바로 commit됨.




> svn info TARGET
info - 해당 파일에 대한 정보를 출력한다.

TARGET의 저장소 URL경로나 마지막 수정 일자등에 대한 정보를 보여준다.




> svn log [PATH]
log - 해당 경로나 파일의 로그( 리비전에 따라 변경된 내역)를 볼수 있다.

지정된 로컬 PATH에 대한 로그를 출력한다.
-r 옵션을 지정하면 출력할 리비젼 범위등을 정할 수 있다.
-v 옵션을 지정하면 로그 내용 및 해당 파일(기타 정보)도 같이 출력 한다.

예제) svn log -r 30:100 test.c
        svn log -r 30:100 -v
설명) 리비전 번호 30~100 내에서 test.c에 대한 로그를 출력한다.
        리비전 번호 30~100 내에 있는 로그 정보 및 기타 정보도 같이 출력한다.





> svn status [PATH]
status 또는 stat, st - 로컬 경로의 파일이나 디렉토리의 상태를 보여준다.

해당 파일이 수정, 추가되었는지 등의 정보를 보여준다.
-u 옵션을 주면 저장소의 최신 리비젼이 얼마인지 알려준다.

예제) svn st -uq
설명) 현 리비전에서 최신 리비전까지 수정, 추가된 파일을 보여준다.






> svn switch 저장소URL [PATH...]
지정된 기존 설정된 로컬 경로를 다른 경로로 변경한다.

예제) svn sw http://127.1.1.1/home/src ./src
        svn sw http://127.1.1.1/home/src

설명) src 디렉토리의 기존 로컬 경로 주소를 127.1.1.1/home/src로 변경한다.
        현재 위치하는 디렉토리의 기존 로컬 경로 주소를 127.1.1.1/home/src로 변경한다.





> svn diff [-r N:M] TARGET
diff 또는 di - 서로 다른 리비젼 간에 차이점을 출력해준다.

지정된 파일이나 경로에 대해 이전 리비젼하고 차이점을 보여준다.
-r 을 지정하면 리비젼 N과 M사이의 차이점을 출력해준다.

예제) svn -r 30:45 test
설명) test 경로내에서 리비젼 번호 30과 45의 차이점을 출력해준다.




1) > svn merge URL1[@N] URL2[@M] [PATH]
2) > svn merge [-r N:M] SOURCE [PATH]

merge - 두 source 사이에 변경 내용을 작업 경로에 적용해준다.

1) URL1[리비젼 N]과 URL2[리비젼 M]을 비교하여, 변경 내용을 작업경로에 적용한다.
2) SOURCE의 리비젼 N과 M을 비교하여, 해당 작업경로에 적용한다.


merge는 branch로 분리된 source에 대해 각각의 변경 내용을 현재의 작업에 병합하고자 할때 유용하다.
주로 Rollback시 사용한다.

예제) svn merge -r [현버전]:[롤백 버전 파일 이름]
        svn merge -r 27:26 file





> svn blame TARGET
blame 또는 praise, annotate, ann - 지정한 파일이나 URL의 내용 수정내역을 각 라인별로 보여준다.

해당 파일의 각 라인에 대해 리비젼과 작성자를 나타내 준다.
누가 언제 어떤행을 수정했는지 알수 있음.




> svn import [PATH] URL
import - 파일과 디렉토리를 저장소에 추가한다.

URL에 지정된 PATH의 하위 디렉토리는 재귀적으로 추가되며, 필요시 상위 디렉토리가 자동으로 생성된다.




> svn export URL [PATH]
export - 저장소에서 순수하게 프로그램 소스만 가져온다.

export는 버전관리를 위한 부속 파일들은 제외하고 순수한 소스만 받아오기 때문에, 주로 source release 용도로 사용되게된다. -r 옵션을 지정해서 해당 리비젼의 소스를 받아올 수 있다.




※ 기타

갱신된 프로세스 SVN version 보기
> ./memdb_rga -p




출처 :  blog.naver.com/sjh77ch/62179981 
         
cozyu.tistory.com/64
          wiki.kldp.org/wiki.php/SubversionBook/GuidedTour
Posted by Mister_Q