Gooday Note Scrap Source Android login
 
작성일 : 11-05-26 16:17
[Linux] Subversion 사용법
 글쓴이 : 기리 (123.♡.195.24)
조회 : 12,945  
   http://jujubong.tistory.com/113 [1477]
   http://pokute.tistory.com/201 [1103]

설치 과정과 용어는 아래 링크를 참조하세요.
http://www.gooday.kr/bbs/board.php?bo_table=note&wr_id=180

[ 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 에 병합함 
출처 : http://blog.naver.com/heyduk?Redirect=Log&logNo=41990064


기리 11-05-26 16:18
 123.♡.195.24  
[Subversion] svn diff 활용 방법 차이점 변경점 비교 하는 방법



버전 관리 툴의 제대로 활용하려면 변경점의 확인을 해야 합니다.
모처럼 버전 관리툴 환경을 마련하고
변경점 정보가 저장되어있는데도 확인하지 않으면
단순 파일공유밖에 되지 않습니다-_-;

먼저, 변경된 파일 리스트를 출력해 봅니다.
간단 출력
]#svn st

변경된 파일만 출력
]# svn diff | awk '/^Index/ {print $NF}'
include/Sample.h
src/Sample.cpp
src/main.cpp

이와 같은 명령어를 입력하면,
베이스 리비전과 작업복사을 비교해 변경되어진 파일의 리스트가 출력됩니다.

특정 리비젼의 (예:123)과 작업복사의 비교
]# svn diff -r 123 file

특정 리비전과 특정 리비전의 비교 (예 100:123)
]# svn diff -r 100:123 file

리포지토리가 동일한경우,
$ svn diff -r 100:123 http://remote.example.com/repo/trunk/poku

작업복사가 없는 상태의 경우,
리포지토리의 특정 2개의 리비젼을 비교하려면
리포지토리URL에 @와 리비젼번호를 지정합니다.
]# svn diff http://remote.example.com/repo/trunk/poku@100 http://remote.example.com/repo/trunk/poku@123
기리 11-05-26 16:21
 123.♡.195.24  
svn diff -r 100:110 | awk '/^Index/ {print $NF}'

svn diff -r83:83 --summarize | awk '{print $NF}' | xargs -i cp {} ../svn_export/ --parents

cp -ar --reply=yes ./* /home/www/


82~92 바우처 변경
 
 

Total 121
번호 제   목 글쓴이 날짜 조회
46 [MySql] MySQL to PostgreSQL 기리 06-20 3584
45 [Test] 테스트 시나리오 템플릿 및 예제 최고관… 05-31 7303
44 [Linux] SVN(Subvision) 간단히 사용하기 기리 05-27 4147
43 [Linux] Subversion 사용법 (2) 기리 05-26 12946
42 [PHP] Ajax <--> PHP 한글 깨지는 현상 해결 기리 05-26 3856
41 [JavaScript] 영어,숫자,한글,이메일 확인 (1) 기리 05-23 3040
40 [Linux] find,rm (특정위치의 특정파일을 모두 찾아서 … 기리 05-23 4320
39 [Linux] readonly 에러로 파일 수정 안될때 기리 05-17 3782
38 [Linux] linux svn client 사용법 (1) 기리 05-16 5377
37 [Linux] 리눅스 마운트(mount) 명령어 기리 05-12 16904
36 [Linux] 리눅스 마운트강좌 mount 2편 기리 05-12 4685
35 [Linux] 리눅스 마운트강좌 mount 편 기리 05-12 9072
34 [JavaScript] Screen 객체 기리 05-09 2379
33 [Linux] Proftp 소개 (2) 기리 05-04 2505
32 [MySql] Mysql Error 기리 05-02 4221
 1  2  3  4  5  6  7  8  9