Develope/Project 관리2013. 3. 20. 11:04

window 사용법(폴더에서 직접사용) ::TortoiseSvn 도움말 참조

- 실제 사용은 해당 메뉴 기능까지 들어가보면 쉽게 이해가능.


기본 기능들

  • import

우클릭 - TortoiseSvn - import 
기능 : 기존에 없던 새로운 소스를 저장소로 올리기 위한 기능.

질문 : import와 add 해서 commit하는 것과의 차이점은?
처음 소스버전을 import하지 않으면 commit 기능 자체가 안됨.
소스의 처음 버전을 저장소로 올려서 이제 시작하는 걸 알리는 기능이라고 생각하면 됨.

  • CheckOut

우클릭 - SVN Checkout
기능 : 특정버전의 전체 소스를 svn이 연결된 상태로 내려받기 위한 기능

  • Commit

우클릭 - SVN Commit
기능 : 기존 svn연결 된 소스에 수정된 소스를 새로운 revision으로 올리기 위한 기능.

질문 : 항상 add commit을 해야되나? commit시 자동 add가 되지 않는가?
에디터 상에서 파일을 추가할때는 (svn연결된 상태) 자동으로 add가 된 상태로 파일이 추가가 되며
탐색기 상에서는 파일을 생성 후 add를 해줘야 함.

  • Update

우클릭 - SVN Update
기능 : 수정된 소스를 특정 version으로 내려 받기 위한 기능. 
색상 : 보라(새로 추가된 파일), Dark red(삭제된 파일), 초록(정상merge된 파일), 빨강(중복 merge 소스가 존재), 블랙(일반 updated된 파일)

  • Resolving Conflicts

기능 : merge시 내가 수정하는 부분과 충돌이 일어난 경우. 유저에게 중복된 부분을 제공해 주고 직접 수정하도록 유도한다.

    <<<<<<< filename
        your changes
    =======
        code merged from repository
    >>>>>>> revision
  • 상태 정보창

각 상태별 아이콘에 대한 설명이 그림으로 잘 정리되어서 첨부. (svn_icon.png)

  • Revision Log

해당 폴더 우클릭 - TortoiseSvn - ShowLog
기능 : 해당 파일이나 폴더별 revision 및 상세 내용을 확인할 수 있다.

  • Diff

파일 및 폴더 우클릭 - TortoiseSvn -Diff
기능 : 버전이 다른 두파일이나 폴더의 차이점을 확인 가능.
한파일을 선택시에는 이전버전과의 차이점 비교 가능.
폴더의 경우는 export를 통해 같은 폴더를 비교해야지만 차이점 확인 가능

  • Ignore

파일 및 폴더 우클릭 - TortoiseSvn - Remove from Ignore List 
기능 : 특정 파일이나 폴더 및 패턴을 제외시킴으로써 commit 이나 import시 자동 제외되는 기능
.aspx를 제외시킨다든지 패턴을 제외시킬수 있음.

  • Delete, Moving

파일 및 폴더 우클릭 - TortoiseSvn - Delete
파일 및 폴더를 마우스 우클릭드래그 - 각각의 Move메뉴 노출
기능 : 파일 및 폴더를 삭제 가능함. 삭제후 commit을 통해 삭제 파일 반영 필수.
moving 기능을 통해서 svn에 연결된 그대로 폴더 및 파일을 이동 가능

  • Branching / Tagging

폴더 우클릭 - TortoiseSvn -Branch/Tag
기능 : trunk 루트 버전이외에 동일한 소스를 다른 용도로 사용하고 싶을 때 이용(서로 작업간 충돌없이 개인이 다른 버전으로 작업 후 merge하고 싶을때 이용)
trunk 소스와 동일하게 commit시 revision이 등록되며 다른 용도 사용 이후 기존 trunk버전과 merge를 통해서 통합하는 형태도 가능.

  • Merging

폴더 우클릭 - TortoiseSvn - Merge
기능 : 1. 파일이나 폴더별 기존 revision과의 merge를 하고 싶을 때 : Merge a range of revisions
2. branch버전과 기존 trunk버전을 merge하고 싶을 때 : Reintegrate a branch
3. 서로다른 트리의 소스를 merge를 하고 싶을 때 : Merge two different trees

  • Switch

파일 및 폴더 우클릭 - TortoiseSvn - Switch
기능 : 현재 trunk 버전을 사용중인데 branch버전의 작업이 필요할 때
전체 checkout을 받을 필요없이 일부분만 switch해서 빠르게 소스를 내려받을 수도 있는 장점이 있음.
참고 http://lethean.pe.kr/2009/02/06/using-subversion-switch-command/

  • Locking

파일 및 폴더 우클릭 - TortoiseSVN - Get Lock
기능 : lock이 걸린 파일은 commit이 불가능

  • Blame

파일만가능. 우클릭 - TortoiseSvn - Blame
기능 : 사용자별로 한 파일에 대해 각 버전별 어떤 부분을 어떻게 수정했는지 확인 가능

  • Export

우클릭 - TortoiseSvn - Export
기능 : 원하는 버전 소스를 svn 연결없이 단지 소스만 추출하는 기능

주요 기능들

  • 이전버전 rollback 후 그 버전으로 재 commit 방법 (중요 자주사용!)

단순 롤백을 한 경우에는 수정된 부분이 없기 때문에 전체를 재 commit할수가 없다.
Reverse Merge 를 이용!

1. TortoiseSVN - Merge - Merge a range of revisions - Reverse merge체크 - Revision range to merge 부분에 현재버전 빼기 롤백하고 싶은 버전을 입력해 준다.
첨부 파일 참조(svn_reverse_merge.png)
2. Next - merge depth - Ignore ancestry(변경기록무시함) 체크 후 Merge!!

ex) 현재 262버전이고 260버전으로 롤백하고 싶을 경우
261-262 버전을 reverse merge해 버리면 260버전으로 돌아가져 있고(261-262수정사항을 지워버리는 것), 이 상태로 commit을 하게 되면 
260버전내용의 263버전을 commit 할 수 있다.

혹시 롤백할 버전의 버전관리가 딱딱 맞아 떨어지지 않아서 원하는 부분만 롤백을 하고 싶은 경우!
롤백할 전체 소스상에서 Reverse Merge를 통하여 롤백하고 싶은 부분의 개별 revision만 "," 를 통해 지정!
그럼 원하는 revision의 내용만 롤백된 상태로 커밋이 가능!

  • branch + trunk Merge 방법

1. branch버전을 commit 후 trunk전체 소스에서 HEAD버전을 Merge!(branch내용의소스의 HEAD버전을 merge) : branch와 trunk 소스 두벌을 유지하는 형태
이 부분에서 만약 디스크 용량문제 등으로 인해 소스 한벌만 유지하는 형태라면
branch버전을 commit후 switch를 통해 trunck버전으로 전환한 후 merge의 1번기능(Merge a range of revisions) 을 통해 commit한 HEAD버전과 merge하는 형태도 가능.

2. merge 2번 기능- Reintegrate a branch
trunk소스 선택후 2번기능을 통해 branch버전과 merge

3. merge 3번기능 - Merge two different trees
먼저 branch버전을 commit해둔 후 저장소의 branch,trunk 소스끼리만 merge하는 형태


원본 주소 : BBinss Blog


Posted by AsCarion