SVN 설정하기
1. 프로젝트 폴더에서 무시목록을 추가합니다.
2. 폴더에서 우클릭 → TortoiseSVN → Setting(1) → General에 Subversion 항목에
Global ignore pattern 에 위의 ignore 목록을 추가한다(2).
|
|
|
|
2. 새로운 파일(폴더)추가 방법
1. SVN과 연동된 폴더안에 새로운 파일(폴더)를 생성하거나 이동시키면 그림과 같이 파일(폴더)에 ? 표시가 나온다. 나와있는 표시대로 ? - 현재 SVN에 없는 파일(폴더) V – SVN서버에 업로드 되어있는 파일(폴더) ! - 현재 SVN서버에 있는 파일(폴더)에서 수정이 되엇거나 변경되었음을 알리는 표시이다.
|
2. ? 표시가 있는 파일(폴더)를 클릭후에 우클릭을 하게되면 아래 그림과같은 창이 나오는데 TortoiseSVN 목록을 클릭하면 여러 버튼이 나오는데 그중에서 + 표시가있는 Add... 버튼을 클릭한후에 디렉토리 설정후 OK버튼을 누르게되면 SVN서버에 추가된다.
|
3. 연동된 SVN서버 사용
1. SVN Update – SVN서버에 올라와 있는 파일을 내 컴퓨터에 내려받기
2. SVN Commit... - 현재 내 컴퓨터에 있는 파일을 SVN서버에 업로드하기
Commit을 할시에는 2번째 그림처럼 창이 하나 뜨는데 아래목록에는 SVN서버에 올라갈 파일(폴더)목록이고 위에 있는 목록에는 업데이트 로그를 남기면서 추가할 메시지를 넣을 수 있다.
변경된 사항이나 기타 추가사항등을 기재해주면 된다.
|
|
4. 그 외 Tortoise SVN 사용법
1.Show Log – SVN 서버에 Commit 하거나 업로드한 파일(폴더)의 기록을 볼수있다. 이 항목으로 버전 관리를 한다.
2. RePo-browser – SVN서버 브라우저에 접속하는 항목이다. 현재 서버주소(https://unitygame-pc:8443/svn/Project) 를 입력하고 접속하게되면 SVN서버에 접속한다.
3. Branch/tag, Merge, Switch – http://blog.naver.com/ywshin94?Redirect=Log&logNo=10111675976 여기 홈페이지에 가보면 자세하게 정리되어있다.
4. Relocate – 해당 서버의 주소가 바뀌거나 했을시에 주소변경용으로 사용된다.
5. Add – SVN서버에 Commit된 파일(폴더)외에 다른 파일(폴더)를 SVN서버에 추가할시에 사용된다.
6. Setting – ingnore 목록과 Tortoise SVN 설정을 할수 있다.
|
기본 기능들
- 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시 내가 수정하는 부분과 충돌이 일어난 경우. 유저에게 중복된 부분을 제공해 주고 직접 수정하도록 유도한다.
- 상태 정보창
각 상태별 아이콘에 대한 설명이 그림으로 잘 정리되어서 첨부. (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버전과 merge3. merge 3번기능 - Merge two different trees
먼저 branch버전을 commit해둔 후 저장소의 branch,trunk 소스끼리만 merge하는 형태