1. SVN이란?
   -자유 소프트웨어 버전 관리 시스템입니다. 명령행 인터페이스에서 사용하는 명령어를 따서 “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도 별개의 문제이다.
    1. 먼저, 어느 version을 기반으로 작업할 것인지 결정한다.
    2. 누가 어느 부분을 개정할 것인지 겹치지 않게 분명하게 결정한다. (누가 먼저 commit하더라도 상관 없도록 한다.)
    3. 각자 개정 후 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들 가운데는 다음과 같은 것들이 있다. (대소문자 구별)
    1. $Date$ 마지막으로 commit된 날짜
    2. $Revision$ 마지막으로 commit된 개정판
    3. $Author$ 마지막으로 commit한 개발자
  • Branch란?
    Project의 진행에 영향을 주지 않으면서 새로운 기능, 기술 등을 시험해 보고 싶을 때가 있다. 그럴 때 branch를 만들어서 프로젝트의 본류와 병행으로 개발할 수 있다. 개발이 성공적이라면 추후에 본류에 합류시킬 수 있다. 그렇지 못하다면 합류시키지 않으면 된다.
  • Branch 또는 Tag 만드는 법?
    1. TortoiseSVN → Branch/tag
    2. Copy (Branch / Tag) dialog box의 To URL 항목 에서 [...] button 선택, Repo Browser를 연다.
    3. branch 또는 tag를 저장할 folder를 새로 만듦. 예를 들어 원류가
    4. Copy (Branch / Tag) dialog box로 돌아온다
    5. file:///C:/svn_repository/Test/branch/[file이름]
    6. Branch를 만들 revision을 선택
    7. Log message 기록
    8. Switch working copy to new branch/tag 선택
    9. [OK] click
    10. Branch가 정상적으로 이루어졌는지 보려면 해당 file을 우 click하고 Revision graph 선택.
  • Tag란?
    따로 뽑아둔 중요한 개정판. 상업 배포판 (예 Windows 3.0, 3.1, 95, 97, ...) 또는 중요한 성공을 이룩한 개정판은 tag를 따로 붙여준다.
  • Branch를 trunk에 합치는 법(Merge)?
    1. Branch를 commit해둔다.
    2. TortoiseSVN → Switch... 선택, Switch To Branch / Tag 대화상자를 연다.
    3. To URL 난에서 trunk의 URL을 선택한다.
    4. Revision은 보통 HEAD revision을 선택한다.
    5. Click [OK] 하면 Working copy가 본류의 최신판으로 돌아간다.
    6. TortoiseSVN → Merge... 선택 Merge 대화상자를 연다.
    7. Merge a range of revisions를 선택한 다음 [Next]
    8. URL to merge from에서 아까 작업하던 branch를 선택한다. 잘 기억 나지 않으면 [...]을 눌러서 repo-browser로 확인한다.
    9. Revision to merge에는 보통 HEAD라고 입력한다음 [Next]
    10. [Test merge]를 눌러 본다. Conflict가 나타나면 실제로 Merge할 때도 conflict가 발생할 것이다. 이는 수동으로 해소 (resolve) 해 주는 것이 바람직하다.
    11. Resolve Conflict 대화상자가 나타나면 [Edit conflict]를 누른다.
    12. Merge 화면이 나타날 것이다. 창틀(pane)이 두개면 오른쪽이 최종 결과이고, 셋이면 Merged가 최종이다. 셋인 경우를 기준으로 설명하면 위 두 창틀에서 어느쪽을 사용할 것인지 정해서 우click, Use this text block을 선택해 준다.
    13. Save 하고 Merge 화면을 닫는다.
    14. Resolve Conflict 대화상자에서 [Resolved]를 click한다. Merge 된 file이 working copy에 반영된다.
    15. TortoiseSVN → Diff 선택하여 변경 내용이 바르게 반영되었는지 확인한다.
    16. Commit 한다.
3. 적용방법

  1. TortoiseSVN 설치
    1. TortoiseSVN Download
    2. 설치한다. (msi파일을 실행한 후 특이한 사항없으면 다음을 눌러 설치완료)
    3. 저장소로 쓰일 폴더를 생성한다. (예: d:\TortoiseSVN_repository)
  2. Eclipse Subversion 적용
    1. Subversion install


      Software Updates를 클릭한후 Find and Install를 클릭!!
      2번째를 클릭한 후 Next!!

      Name: subclipse 1.6.x
      URL: http://subclipse.tigris.org/update_1.6.x 를 입력한다

      제 화면에는 안나오는데(이미 설치되어서) 원래는 여러가지가 나옵니다. 필요에 따라 설치하세요~!
  3. Eclipse프로젝트에 적용하기




            여기서 로컬컴퓨터 사용할려면 위처럼 하면 되고 사용할려면 URL부분을 해당 서버 주소로 입력하시면 된다.

          이상 적용완료!!!!
Posted by Finebe
,