사용자 도구

사이트 도구


develop:vcs:subversion:mytips

서브버젼(Subversion) 명령어

목적

  1. 개인적으로 자주 이용하는 Subversion 명령을 모아두었다.

관리(Administration)

준비

  1. apache2 + subversion 을 사용하는 것을 기준으로 설명합니다.
  2. Debian 서버 기준이며, 패키지로 설치한 것입니다.
  3. 경로와 파일은 아래와 같다고 가정한다.
Subversion URL http://subversion.adminschool.net
기본디렉토리 /data/vcs/svn
아파치설정 /etc/apache2/mods-available/dav_svn.conf
계정정보 /etc/apache2/dav_svn.passwd

사용자계정

  1. Subversion 계정관리는 /etc/apache2/dav_svn.passwd 에서 관리한다.
  2. 계정추가(htpasswd 명령을 이용한다.)
    # htpasswd /etc/apache2/dav_svn.passwd starlits
  3. 계정삭제(vi로 /etc/apache2/dav_svn.passwd 파일을 열어 계정이 있는 라인 삭제)
  4. 계정암호변경
    1. 추가와 명령이 동일하다.
    2. 아이디가 존재하면 암호만 변경된다.
      # htpasswd /etc/apache2/dav_svn.passwd starlits

프로젝트 생성

  1. beflyt 라는 프로젝트 디렉토리를 만든다.
    # svnadmin create /data/vcs/svn/beflyt
  2. apache2에서 사용할 수 있도록 권한을 부여한다.
    # cd /data/vcs/svn
    # chown -R www-data.www-data beflyt/
  3. 웹브라우저를 열어서 확인해 본다.
    http://subversion.adminschool.net/svn/beflyt

프로젝트 삭제

  1. /data/vcs/svn 아래의 프로젝트(예 beflyt)를 삭제하면 된다.
    # cd /data/vcs/svn
    # rm -rf beflyt

개발(Development)

Import Project

  1. 버젼관리할 소스 디렉토리로 이동한다.
  2. New Project라는 이름으로 새로운 프로젝트를 최초 등록(Import) 시킨다.
    # cd /path/to/projectname
    # svn import -m "New Project" . svn://HostName/projectname/trunk
    or
    # svn import -m "New Project" . http://HostName/svn/projectname/trunk

Create tag, branch directory

  1. 테그(tag) 디렉토리를 생성한다.
    # svn mkdir -m "Create tags directory" svn://HostName/projectname/tags
    or
    # svn mkdir -m "Create tags directory" http://HostName/svn/projectname/tags
  2. 브런치(branches) 디렉토리를 생성한다.
    # svn mkdir -m "Create branches directory" svn://HostName/projectname/branches
    or
    # svn mkdir -m "Create branches directory" http://HostName/svn/projectname/branches

Checkout Project

  1. svn 서버를 이용할 경우
     $ svn co svn://subversion.adminschool.net/projectname/trunk projectname 
  2. http를 이용하는 경우
     $ svn co http://subversion.adminschool.net/svn/projectname/trunk projectname 
  3. OS 계정과 다른 계정으로 가져올때
     $ svn --username=starlits co http://subversion.adminschool.net/svn/projectname/trunk projectname 

Update

  1. Subversion Server에 변경된 파일이 있는지 확인하고, 최신정보를 반영한다.
     $ svn update 

commit

  1. 변경된 파일 반영하기
     $ svn commit 

checkout/update/commit 차이

Checkout Repository로부터 내용을 꺼내오는 작업 (co 라고 줄여쓸 수 있다.)
Commit Checkout된 내용을 수정한 뒤에 다시 Repository로 보내는 작업
Update Checkout 한 뒤로 다른 사람들이 commit한 내용을 추가적으로 checkout 하는 작업

add

  1. 파일/디렉토리 추가하기
     $ svn add {filename|directory} 

Diff

  1. 현재 revision이 5 일 경우, revision 4와 차이를 출력한다.
    $svn diff --revision 4 sample.c
    Index: sample.c
    ===================================================================
    --- sample.c    (revision 4)
    +++ sample.c    (working copy)
    @@ -2,7 +2,8 @@
    
     int main()
     {
    -  printf("Sample Program Version 0.1\n");
    +  printf("Sample Program Version 0.2\n");
    +  printf("Hello Subversion\n");
    
       return 0;
     }
  2. revision 4와 5를 비교 하고 싶으면 --revision 4:5 (-r 4:5)로 하면 된다.
    --revision 8:10 도 가능하다.
    $ svn diff --revision 4:5 sample.c
    Index: sample.c
    ===================================================================
    --- sample.c    (revision 4)
    +++ sample.c    (revision 5)
    @@ -2,7 +2,8 @@
    
     int main()
     {
    -  printf("Sample Program Version 0.1\n");
    +  printf("Sample Program Version 0.2\n");
    +  printf("Hello Subversion\n");
    
       return 0;
     }

History View

  1. 현재까지 Repository에 올라간 로그기록을 보여준다.
     $ svn log 
  2. 현재소스와 Repository의 소스상의 차이를 보여준다.
     $ svn diff 
  3. 로그기록을 ChangeLog 파일로 만들어 준다.
     $ svn2cl 

과거소스 가져오기

  1. 현재 최신 소스를 받아온다.
     $ svn co http://svn.adminschool.net/svn/beflyt/trunk beflyt 
  2. 2008년 1월 1일 소스를 받아온다.
     $ svn co -r {20080101} http://svn.adminschool.net/svn/beflyt/trunk beflyt 
  3. Revision 3 소스를 받아온다.
     $ svn co -r 3 http://svn.adminschool.net/svn/beflyt/trunk beflyt 

서버와 버젼확인

  1. SVN 서버에 로컬에 있는 파일보다 최신버젼이 있는지 확인한다.
    svn status -u

tags 사용법

develop/vcs/subversion/mytips.txt · 마지막으로 수정됨: 2016/04/28 15:06 저자 starlits