미니옵빠의 code stubs

Subversion (SVN) 3가지 방식과 주요 명령어 정리 본문

Tools/Subversion

Subversion (SVN) 3가지 방식과 주요 명령어 정리

미니옵빠 2011. 8. 28. 19:27
출처 DJ's Blog | 이덕재
원문 http://blog.naver.com/heyduk/41990064

[ Subversion 정리 ]

 

1. Subversion 을 사용하는 3가지 방식

   1) 탐색기 방식
      Subversion을 윈도우즈 탐색기처럼 사용하도록 해주는 TortoiseSVN이 있다. 아래 링크를 통해 TortoiseSVN을 설치하여 사용한다.
      http://tortoisesvn.tigris.org
 
   2) 웹 방식
      Apache 서버를 구축하고 Subversion과 ViewVC를 설치하면 익스플로러를 통해 웹처럼 접근할수 있다.
      http://httpd.apache.org : Apache (apache_2.0.59-win32-x86.msi)
      http://subversion.tigris.org : Subversion (svn-1.4.3-setup.exe)
      http://www.viewvc.org : ViewVC (viewvc-1.0.3.zip)
      ViewVC를 사용하지 않을 경우에는 "지정 도메인"/"해당 저장소" 로 접근
    예) sample.com/repository
     

      ViewVC를 사용할 경우에는 "지정 도메인"/viewvc 로 접근
    예) sample.com/viewvc
   
   3) svn+ssh 방식
       ssh클라이언트 툴인 putty를 이용하여 ssh로 암호화 된 상태로 Subversion을 사용한다.

       개인마다 키를 생성하여 이용하는데........


 

 

2. Subversion 주요 명령어
  
   1) svnadmin create : 지정한 위치에 새로운 저장소(repository)를 생성한다.
       형식 - svnadmin create "dest"
       # svnadmin create /home/heyduk/repos
  
   2) svn import : 생성된 저장소에 프로젝트 파일을 넣는다.
       형식 - svn import "option" "source" "dest"

       # svn import -m "import first project" . file:///home/heyduk/repos/project1/trunk
         -m 옵션을 통해 import 할때의 메세지를 남기고 현재 디렉토리의 내용을 project1라는 별도의 디렉토리에 넣는다.
  
   3) svn checkout(co) : 저장소에 보관된 프로젝트 소스를 로컬 시스템의 작업 디렉토리로 복사하여 가져온다.
       형식 - svn co "source" "dest"
       # svn co file:///home/heyduk/repos/project1/trunk my_work
  
   4) svn commit : 지역 작업본의 변경한 내용들을 저장소에 저장하며 프로젝트를 새로 리비젼시킨다.
       형식 - svn commit(ci) "option"
       # svn commit -m "main() modified"
  
   5) svn status : 작업 복사본에서 변경된 이후 아직 저장소로 commit 되지 않은 내용을 확인한다.
       형식 - svn st "path"

       # svn status(st) main.c
         출력 내용 중 첫번째 문자를 통해 상태를 확인할 수 있는데 그중 몇가지 주요 내용은 다음과 같다.
         A : 추가됨
         C : 충돌됨
         D : 삭제됨
         M : 수정됨
         G : 병합됨

 

   6) svn diff : 저장소의 내용과 현재 작업 내용을 비교하여 변경한 부분(차이점)을 자세히 확인한다.
                   저장소와의 네트워킹은 일어나지 않으므로 실시간 변경 내용은 반영되지 않는다.
      형식 - svn diff "path" , svn diff "option"

      # svn diff main.c
        저장소의 내용과 현재 작업내용 중 main.c 파일의 차이를 확인

      # svn diff -r 1:2
        리비전 1과 2의 차이를 확인

      # svn diff -r 1 main.c
        리비전 1과 현재 작업중인 main.c의 차이를 확인

      # svn diff -r 2
        리비전 2와 현재 작업중인 디렉토리의 파일내용 차이를 확인

 

   7) svn log : 특정 파일의 commit된 로그 메세지를 확인한다.
      형식 - svn log "path" , svn log "option"

      # svn log main.c
        main.c 파일이 commit 된 로그메세지를 출력

      # svn log -r 1:2
        리비젼1부터 2까지의 로그메세지를 출력
     
   8) svn update : 현재 작업디렉토리의 내용을 저장소의 최신 리비전으로, 또는 지정한 리비전으로 갱신한다.
      형식 - svn update(up) "option"

      # svn up
        현재 작업 내용을 최신내용으로 갱신

      # svn up -r 1
        현재 작업 내용을 리비전 1로 갱신(최신 리비전보다 이전으로 되돌리는 것도 가능하다.)
  
   9) svn add : 프로젝트에 파일이나 디렉토리를 추가한다.
      형식 - svn add "path"

      # svn add Makefile
        add로 추가한 경우 저장소에는 바로 반영되지 않기 때문에 commit 을 수행하여 새로운 리비전으로 갱신할 필요가 있다.
       
   10) svn revert : 지역 작업 복사본에서 수행한 변경들을 이전 상태로 복원(실행 취소)한다.
        형식 - svn revert "path"

        # svn revert main.c
           지역 복사본의 main.c 파일에 가했던 변경들을 모두 복원(취소)함
 
   11) svn merge : 저장소끼리, 또는 저장소와 지역 작업본간의 변경 내역을 작업본에 병합한다.
        형식 - svn merge "source1" "source2" "dest" : 다른 저장소끼리의 변경 사항을 지정한 작업 복사본으로 병합함
                  svn merge -r rev_num1:rev_num2 "dest" : 기본 저장소에 있는 두 리비전의 변경사항을 지정한 작업 복사본으로 병합함
 

       # svn merge file:///home/heyduk/repos/project1/trunk file:///home/heyduk/repos/project2/trunk my_work
           저장소의 project1과 project2간의 차이를 지역 작업본인 my_work에 병합함

        # svn merge -r 6:7 file;///home/heyduk/repos/trunk my_work
           저장소의 리비전 6~7의 변경내용을 지역 작업본인 my_work 에 병합함
   

 

 

기타 Tips

 

commit 취소 방법
 # svn merge -r 현버전:되돌릴버전 파일이름

 # svn commit 파일이름

 

commit 했던 것을 취소할 수 있다.. 물론 revision은 하나 올라가지만... ;;