|
|
1. SVN이란?
-자유 소프트웨어 버전 관리 시스템입니다. 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 합니다. 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발되었습니다.
2. 사용 후기
-사용한지는 1년여정도 되었습니다. 1년여동안은 외부서버에 SVN서버를 설치하여 사용하였지만 요번에 제 개인컴퓨터에 SVN을 적용했습니다.
3. 용어설명
여기서 로컬컴퓨터 사용할려면 위처럼 하면 되고 사용할려면 URL부분을 해당 서버 주소로 입력하시면 된다.
이상 적용완료!!!!
-자유 소프트웨어 버전 관리 시스템입니다. 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 합니다. 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발되었습니다.
2. 사용 후기
-사용한지는 1년여정도 되었습니다. 1년여동안은 외부서버에 SVN서버를 설치하여 사용하였지만 요번에 제 개인컴퓨터에 SVN을 적용했습니다.
3. 용어설명
- Repository(저장소)란?
Subversion이 version control 관련 data를 저장하는 곳입다. 구성하는 방법은 다양하다: 한 repository에 여러 project를 담을 수도 있고, 한 repository에 한 project만 담는 경우도 있다. 두 방법 모두 장단점이 있다. 한 project당 하나씩의 repository를 사용하는 것이 일반적으로 더 바람직하다.
- Check out이란?
저장소에서 project를 작업공간에 인출하는 것. Download와 유사하다.
- Commit이란?
작업공간에서 수정된 project를 저장소에 반영하는 것. Upload와 유사하다. Commit하기 전에 작업 공간의 file을 충분히 시험하여야 한다.
- Commit message란?
Commit 할 때 수정된 내용의 의미를 적어둔다.
- Update란?
공동으로 작업할 때 다른 사람들이 수정하여 commit한 모든 최신 version을 일괄적으로 받아오는 것. 역시 download와 유사하다.
- Diff란?
수정된 file의 내용 또는 저장소에 저장된 두 revision 사이의 차이를 비교해 준다.
- Conflict란?
개발자 Joe 와 Sue 가 같은 file의 같은 version을 수정중이었다. Joe가 자신이 수정한 file을 먼저 commit 하였다. Sue가 그 사실을 알지 못하고 수정한 file 부분이 Joe가 수정한 부분과 달랐다. 위 그림의 경우, 둘째줄이 Cheese가 되어야 하는지 Hot Dog이 되어야 하는지 혼란이 일어난 것이다. 이런 상태를 방지하기 위해 lock을 사용할 수 있다.
- Conflict는 어떻게 해결하는 것인지?
Sue가 r4를 우선 update 받아서 수정 (Hot Dog을 추가 또는 file 전체 덮어쓰기)한 다음 commit할 수 있다.
- 여러사람이 동시에 작업한 결과를 안전하게 합치는 법?
- 모든 경우에 다 가능한 것은 아니다.
- 잘만 되면 생산성을 n배 늘릴 수도 있다.
- CVS나 Subversion인 경우에는 가능하지만, 다른 version control system에서는 불가능할 수도 있다.
- 주의: Commit에 성공과 compile에 성공은 별개의 문제이다. Conflict 없이 여러 commit에 error 없이 성공하더라도 build 과정에서 error가 발생할 수 있다. Compile에 성공과 bug 없는 SW도 별개의 문제이다.
- 먼저, 어느 version을 기반으로 작업할 것인지 결정한다.
- 누가 어느 부분을 개정할 것인지 겹치지 않게 분명하게 결정한다. (누가 먼저 commit하더라도 상관 없도록 한다.)
- 각자 개정 후 commit 한다.
- 어떤 project가 lock 되었을 때의 효과는?
Subversion은 기본적으로 locking을 별로 선호하지 않는 system이다. 충돌이 일어날 수 있는 상황인 두 사람이 같은 file 같은 version의 같은 부분을 수정할 확률이 높지 않다고 보는 것이다. 그러나 file의 크기가 크지 않은 경우에는 누가 수정을 하더라도 비슷한 위치에서 수정이 일어나기 때문에 충돌이 일어날 가능성이 더 높을 것이다. 또한, 그림 file 등과 같이 merge가 곤란한 file의 경우, lock을 하는 편이 훨씬 안전하다.
Harry가 어떤 file을 lock하면, Sally는 file을 check-out하거나 update 받을 수는 있지만 commit하지는 못한다. 이후 Harry가 lock을 풀면 Sally가 다시 commit할 수 있다.
- Keyword란?
Subversion 안에 보관중인 file 자체에 file의 이름, 저자, 개정 번호 등의 정보를 자동적으로 기록, 갱신하기 위하여 keyword를 사용할 수 있다. Subversion에서 사용할 수 있는 keyword들 가운데는 다음과 같은 것들이 있다. (대소문자 구별) - $Date$ 마지막으로 commit된 날짜
- $Revision$ 마지막으로 commit된 개정판
- $Author$ 마지막으로 commit한 개발자
- Branch란?
Project의 진행에 영향을 주지 않으면서 새로운 기능, 기술 등을 시험해 보고 싶을 때가 있다. 그럴 때 branch를 만들어서 프로젝트의 본류와 병행으로 개발할 수 있다. 개발이 성공적이라면 추후에 본류에 합류시킬 수 있다. 그렇지 못하다면 합류시키지 않으면 된다.
- Branch 또는 Tag 만드는 법?
- TortoiseSVN → Branch/tag
- Copy (Branch / Tag) dialog box의 To URL 항목 에서 [...] button 선택, Repo Browser를 연다.
- branch 또는 tag를 저장할 folder를 새로 만듦. 예를 들어 원류가
- Copy (Branch / Tag) dialog box로 돌아온다
- file:///C:/svn_repository/Test/branch/[file이름]
- Branch를 만들 revision을 선택
- Log message 기록
- Switch working copy to new branch/tag 선택
- [OK] click
- Branch가 정상적으로 이루어졌는지 보려면 해당 file을 우 click하고 Revision graph 선택.
- Tag란?
따로 뽑아둔 중요한 개정판. 상업 배포판 (예 Windows 3.0, 3.1, 95, 97, ...) 또는 중요한 성공을 이룩한 개정판은 tag를 따로 붙여준다.
- Branch를 trunk에 합치는 법(Merge)?
- Branch를 commit해둔다.
- TortoiseSVN → Switch... 선택, Switch To Branch / Tag 대화상자를 연다.
- To URL 난에서 trunk의 URL을 선택한다.
- Revision은 보통 HEAD revision을 선택한다.
- Click [OK] 하면 Working copy가 본류의 최신판으로 돌아간다.
- TortoiseSVN → Merge... 선택 Merge 대화상자를 연다.
- Merge a range of revisions를 선택한 다음 [Next]
- URL to merge from에서 아까 작업하던 branch를 선택한다. 잘 기억 나지 않으면 [...]을 눌러서 repo-browser로 확인한다.
- Revision to merge에는 보통 HEAD라고 입력한다음 [Next]
- [Test merge]를 눌러 본다. Conflict가 나타나면 실제로 Merge할 때도 conflict가 발생할 것이다. 이는 수동으로 해소 (resolve) 해 주는 것이 바람직하다.
- Resolve Conflict 대화상자가 나타나면 [Edit conflict]를 누른다.
- Merge 화면이 나타날 것이다. 창틀(pane)이 두개면 오른쪽이 최종 결과이고, 셋이면 Merged가 최종이다. 셋인 경우를 기준으로 설명하면 위 두 창틀에서 어느쪽을 사용할 것인지 정해서 우click, Use this text block을 선택해 준다.
- Save 하고 Merge 화면을 닫는다.
- Resolve Conflict 대화상자에서 [Resolved]를 click한다. Merge 된 file이 working copy에 반영된다.
- TortoiseSVN → Diff 선택하여 변경 내용이 바르게 반영되었는지 확인한다.
- Commit 한다.
- TortoiseSVN 설치
- TortoiseSVN Download
- 설치한다. (msi파일을 실행한 후 특이한 사항없으면 다음을 눌러 설치완료)
- 저장소로 쓰일 폴더를 생성한다. (예: d:\TortoiseSVN_repository)
- Eclipse Subversion 적용
- Subversion install
Software Updates를 클릭한후 Find and Install를 클릭!!
2번째를 클릭한 후 Next!!
Name: subclipse 1.6.x
URL: http://subclipse.tigris.org/update_1.6.x 를 입력한다
제 화면에는 안나오는데(이미 설치되어서) 원래는 여러가지가 나옵니다. 필요에 따라 설치하세요~!
- Eclipse프로젝트에 적용하기
여기서 로컬컴퓨터 사용할려면 위처럼 하면 되고 사용할려면 URL부분을 해당 서버 주소로 입력하시면 된다.
이상 적용완료!!!!
'Web Programming' 카테고리의 다른 글
4개 브라우저의 랜더링엔진 설명 (3) | 2010.07.08 |
---|---|
Microsoft REMIX09 Open (0) | 2009.09.15 |
유니코드란.. (2) | 2009.05.04 |
HTTP 세션연결 및 데이터 전송과정 과 회선 종결과정 (2) | 2009.05.04 |