Subversion

기획부장 김은석
http://kimeunseok.com
버전관리 시스템의 필요성




                   프로젝트
        a.Cpp 수정          a.Cpp, b.Cpp 수정
  개발자                                       개발자
버전관리 시스템의 필요성




                   프로젝트
        a.Cpp 수정          a.Cpp, b.Cpp 수정
  개발자                                       개발자
버전관리 시스템의 필요성




                   프로젝트
        a.Cpp 수정          a.Cpp 수정
  개발자                                개발자
버전관리 시스템의 필요성




                   프로젝트
        a.Cpp 수정          a.Cpp 수정
  개발자                                개발자
버전관리 시스템의 필요성


    SVN을 써보자!




                   프로젝트
                    >_ < !!
  개발자                                   개발자




                              a.Cpp , b.Cpp 수정
        a.Cpp 수정




                    SVN
SVN을 사용하니?!

ㆍ 개발 버전과 릴리즈 버전을 섞이지 않고 쉽게 관리 할 수 있구나!

ㆍ 소스를 잘 못 수정 했더라도 기록이 남고 되돌리기가 쉽구나!

ㆍ 수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽구나!
 (누가 일을 안하는지는 덤으로!!)

ㆍ 우리가(개발자들) 따로 따로 백업을 하지 않아도 되구나!


  이거슨 마치 신세계!!




개발자
멤버십에서 SVN은 어떻게 사용할까?




        nForge에 접속!
      그리고 회원가입은 필수!




개발자
멤버십에서 SVN은 어떻게 사용할까?




                일단 가입하고 가입 확인
                 메일을 반드시 확인!




                                개발자
멤버십에서 SVN은 어떻게 사용할까?




                 가입확인 메일을 확인 후
                   프로젝트 생성!
                기획부장 과제가 랭킹1위ㅋ
                       ㅋ




                                 개발자
멤버십에서 SVN은 어떻게 사용할까?




              프로젝트 정보 입력 후
              SVN으로 체크 후 확인~!
              교육부장 승인 후 본격적인 사용가능!




                                 개발자
멤버십에서 SVN은 어떻게 사용할까?




              등록 끝!
              이제 사용을 해야할텐데…
              어떻게 연동하지..?




                              개발자
Eclipse와 연동해보자!!




                   우선 플러그인을
                   설치해야겠지?




                              개발자
Eclipse와 연동해보자!!




       http://subclipse.tigris.org/update_1.6.x   우선 플러그인을
                                                  설치해야겠지?




                                                             개발자
Eclipse와 연동해보자!!




                     Subclipse 체크 후
                   Next 계속하면 설치 끝!




                                  개발자
Eclipse와 연동해보자!!




                   프로젝트를 만들어보자!




                              개발자
Eclipse와 연동해보자!!




                   SVN선택 후 Next!




                                   개발자
Eclipse와 연동해보자!!




                   새로운 저장소의 위치
                    를 정해줘야겠지?




                                 개발자
Eclipse와 연동해보자!!




                    저장소의 주소는
                   프로젝트 홈의 코드에
                        서
                    확인할 수 있어!




                                 개발자
Eclipse와 연동해보자!!




                   저장소 Url을 입력한 뒤
                     Next를 눌러줘!




                                    개발자
Eclipse와 연동해보자!!




                   원하는 폴더를 고르고~




                              개발자
Eclipse와 연동해보자!!




                   Finish!
                   아참! 아이디와 암호를
                   물어보는데 그건 자신의
                   nForge 아디와 암호를 입력하
                   면 되!




                                        개발자
Eclipse와 연동해보자!!
Eclipse와 연동해보자!!
VS도 연동해보자!!

솔직히 유료버전이 더 간지긴 한데…돈 없으니까!
무료버전으로 설명한다! (플러그인이 다름)

아무튼 다운로드는 http://ankhsvn.open.collab.net/ 에서 한다!

회원가입 해야하는데 영어다…
근데 솔찌 그정도는 혼자서 하자…

AnkhSvn.msi 파일을 받았을텐데 받은 후엔 그냥 더블 크리리리리릭하면 된다.



                                                   VS도 당연히 플러그인
                                                         이
                                                     필요하다 제군!




                                                                  개발자
VS도 연동해보자!!




               이런 창은 무조건
              동의 후에 Install이다!
              그리고 Finish나오면
                  클릭!




                                 개발자
VS도 연동해보자!!




              설치 후에 VS를 키면
              View창에 변화가 보인
                    다!




                              개발자
VS도 연동해보자!!




              Repository Explorer
              클릭해서 지구+클릭!




                                    개발자
VS도 연동해보자!!




              아까 그 Url 입력하고
                  Ok하자!




                              개발자
VS도 연동해보자!!




              아디/암호도
              아까 그거…




                       개발자
VS도 연동해보자!!




                   이제… 슬슬 감이 오지?
                그냥 원하는 폴더(생성이나 선택)
              골라서 더블클릭하고, 각 파일도 더블클
                          릭
              하면 다 열림. 고치고 세이브하면 자동으
                          로
                수정됨. 동시에 처리하는 것도 됨
                        짱 좋음!




                                       개발자
VS도 연동해보자!!




                   이제… 슬슬 감이 오지?
                그냥 원하는 폴더(생성이나 선택)
              골라서 더블클릭하고, 각 파일도 더블클
                          릭
              하면 다 열림. 고치고 세이브하면 자동으
                          로
                수정됨. 동시에 처리하는 것도 됨
                        짱 좋음!




                                       개발자
Eclipse와 연동해보자!!
SVN은 대충 쓰는거 아니다!

ㆍRepository - 프로젝트 파일 및 변경 정보가 저장되는 장소
ㆍImport - 빈 Repository에 맨 처음 파일들을 채우는 것
ㆍCheckout - Repository에서 프로젝트 관련 파일들을 받아 오는 것
ㆍCommit - Checkout한 파일의 수정사항을 갱신
ㆍRevision - Commit 할 때 마다 카운트 되는 번호
ㆍUpdate - Checkout한 파일들을 최신의 것으로 갱신
ㆍExport - 버전관리 파일들을 뺀 순수 파일만 빼내는 것


                             용어 정도는 걍 외워라…



                                             개발자
SVN은 대충 쓰는거 아니다!

ㆍTag - 개념적으로 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것이다.
      즉 Revision 번호 그자체에 해당한다.

ㆍ Branch - 브런치 생성은 복사와 같은 개념이다. 물론 Tag도 비슷하다.
           Backup 해두는 정도로 생각하면 될듯하다.

ㆍ Trunk - 프로젝트에서 가장 중심이 되는 디렉토리로 소스와 파일들이 포함된
다.

                                 이건 중요하다!
                              어떤 폴더를 어떻게 쓰는지
                                     는
                                  알아야겠지?

                                               개발자
SVN은 대충 쓰는거 아니다!

ㆍTag - 개념적으로 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것이다.
      즉 Revision 번호 그자체에 해당한다.

ㆍ Branch - 브런치 생성은 복사와 같은 개념이다. 물론 Tag도 비슷하다.
           Backup 해두는 정도로 생각하면 될듯하다.

ㆍ Trunk - 프로젝트에서 가장 중심이 되는 디렉토리로 소스와 파일들이 포함된
다.

                                 이건 중요하다!
                              어떤 폴더를 어떻게 쓰는지
                                     는
                                  알아야겠지?

                                               개발자
Eclipse와 연동해보자!!
진짜 이젠 이해할 수 있겠지?


 Tag

       1.0


 Tag           Branch                    Trunk
       2.0               따로 개발 해야하는군!



              버전별로 달리!
        3.0
 Tag
                                그림으로 설명하면…



                                                 개발자
잠깐…CVS랑 뭐가 다름?



          나보다 잘난게   ????
           없는데?




    CVS                    SVN
잠깐…CVS랑 뭐가 다름?

                    너님 스크립트제공
                        함?


               너님 리비전
               단위가 뭐임?
         ㅈㅅ


              너님 속도빠름?
         ㅈㅅ
                             SVN
              너님 디렉토리도
   CVS
              버전별 관리됨?
         ㅈㅅ


                 너님 동시커밋됨?
잠깐…CVS랑 뭐가 다름?

ㆍ 커밋 단위가 파일이 아닌 체인지셋입니다.

ㆍ CVS에 비해 엄청나게 빠른 업데이트/브랜칭/태깅 시간이 CVS보다 21배 빠름


ㆍ 파일 이름 변경, 이동, 디렉토리 버전 관리도 지원.


ㆍ 원자적 커밋. CVS에서는 여럿이 동시 커밋할 때 종종 충돌이 발생하는데 Subversion에서는 더 이상 그런 일이 없어졌습니다.


ㆍ 양방향 데이터 전송으로 네트워크 소통량 최소화합니다.


ㆍ 트리별, 파일별 접근 제어 리스트. 저장소 쓰기 접근을 가진 개발자라도 아무 소스나 수정하지 못하게 조절할 수 있습니다.


ㆍ 저장소/프로젝트별 환경 설정 가능


ㆍ 확장성을 염두에 둔 구조, 깔끔한 소스


ㆍ 커밋 통지 메일 스크립트 기본 제공. CVS에서라면 스크립트를 따로 구해서 써야 하는 번거로움이 있었지만,
 Subversion은 기본 제공 스크립트를 이용해서 훨씬 손쉽게 설정이 가능합니다.
결론을 이야기하자면…




 CVS   <   SVN
                 <=   Git
진짜 이젠꼭 쓰는걸로~ 수 있겠지?
   SVN은 이해할




 Tag

       1.0


 Tag           Branch                    Trunk
       2.0               따로 개발 해야하는군!



              버전별로 달리!
        3.0
 Tag
                                그림으로 설명하면…



                                                 개발자

Subversion

  • 1.
  • 2.
    버전관리 시스템의 필요성 프로젝트 a.Cpp 수정 a.Cpp, b.Cpp 수정 개발자 개발자
  • 3.
    버전관리 시스템의 필요성 프로젝트 a.Cpp 수정 a.Cpp, b.Cpp 수정 개발자 개발자
  • 4.
    버전관리 시스템의 필요성 프로젝트 a.Cpp 수정 a.Cpp 수정 개발자 개발자
  • 5.
    버전관리 시스템의 필요성 프로젝트 a.Cpp 수정 a.Cpp 수정 개발자 개발자
  • 6.
    버전관리 시스템의 필요성 SVN을 써보자! 프로젝트 >_ < !! 개발자 개발자 a.Cpp , b.Cpp 수정 a.Cpp 수정 SVN
  • 7.
    SVN을 사용하니?! ㆍ 개발버전과 릴리즈 버전을 섞이지 않고 쉽게 관리 할 수 있구나! ㆍ 소스를 잘 못 수정 했더라도 기록이 남고 되돌리기가 쉽구나! ㆍ 수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽구나! (누가 일을 안하는지는 덤으로!!) ㆍ 우리가(개발자들) 따로 따로 백업을 하지 않아도 되구나! 이거슨 마치 신세계!! 개발자
  • 8.
    멤버십에서 SVN은 어떻게사용할까? nForge에 접속! 그리고 회원가입은 필수! 개발자
  • 9.
    멤버십에서 SVN은 어떻게사용할까? 일단 가입하고 가입 확인 메일을 반드시 확인! 개발자
  • 10.
    멤버십에서 SVN은 어떻게사용할까? 가입확인 메일을 확인 후 프로젝트 생성! 기획부장 과제가 랭킹1위ㅋ ㅋ 개발자
  • 11.
    멤버십에서 SVN은 어떻게사용할까? 프로젝트 정보 입력 후 SVN으로 체크 후 확인~! 교육부장 승인 후 본격적인 사용가능! 개발자
  • 12.
    멤버십에서 SVN은 어떻게사용할까? 등록 끝! 이제 사용을 해야할텐데… 어떻게 연동하지..? 개발자
  • 13.
    Eclipse와 연동해보자!! 우선 플러그인을 설치해야겠지? 개발자
  • 14.
    Eclipse와 연동해보자!! http://subclipse.tigris.org/update_1.6.x 우선 플러그인을 설치해야겠지? 개발자
  • 15.
    Eclipse와 연동해보자!! Subclipse 체크 후 Next 계속하면 설치 끝! 개발자
  • 16.
    Eclipse와 연동해보자!! 프로젝트를 만들어보자! 개발자
  • 17.
    Eclipse와 연동해보자!! SVN선택 후 Next! 개발자
  • 18.
    Eclipse와 연동해보자!! 새로운 저장소의 위치 를 정해줘야겠지? 개발자
  • 19.
    Eclipse와 연동해보자!! 저장소의 주소는 프로젝트 홈의 코드에 서 확인할 수 있어! 개발자
  • 20.
    Eclipse와 연동해보자!! 저장소 Url을 입력한 뒤 Next를 눌러줘! 개발자
  • 21.
    Eclipse와 연동해보자!! 원하는 폴더를 고르고~ 개발자
  • 22.
    Eclipse와 연동해보자!! Finish! 아참! 아이디와 암호를 물어보는데 그건 자신의 nForge 아디와 암호를 입력하 면 되! 개발자
  • 23.
  • 24.
  • 25.
    VS도 연동해보자!! 솔직히 유료버전이더 간지긴 한데…돈 없으니까! 무료버전으로 설명한다! (플러그인이 다름) 아무튼 다운로드는 http://ankhsvn.open.collab.net/ 에서 한다! 회원가입 해야하는데 영어다… 근데 솔찌 그정도는 혼자서 하자… AnkhSvn.msi 파일을 받았을텐데 받은 후엔 그냥 더블 크리리리리릭하면 된다. VS도 당연히 플러그인 이 필요하다 제군! 개발자
  • 26.
    VS도 연동해보자!! 이런 창은 무조건 동의 후에 Install이다! 그리고 Finish나오면 클릭! 개발자
  • 27.
    VS도 연동해보자!! 설치 후에 VS를 키면 View창에 변화가 보인 다! 개발자
  • 28.
    VS도 연동해보자!! Repository Explorer 클릭해서 지구+클릭! 개발자
  • 29.
    VS도 연동해보자!! 아까 그 Url 입력하고 Ok하자! 개발자
  • 30.
    VS도 연동해보자!! 아디/암호도 아까 그거… 개발자
  • 31.
    VS도 연동해보자!! 이제… 슬슬 감이 오지? 그냥 원하는 폴더(생성이나 선택) 골라서 더블클릭하고, 각 파일도 더블클 릭 하면 다 열림. 고치고 세이브하면 자동으 로 수정됨. 동시에 처리하는 것도 됨 짱 좋음! 개발자
  • 32.
    VS도 연동해보자!! 이제… 슬슬 감이 오지? 그냥 원하는 폴더(생성이나 선택) 골라서 더블클릭하고, 각 파일도 더블클 릭 하면 다 열림. 고치고 세이브하면 자동으 로 수정됨. 동시에 처리하는 것도 됨 짱 좋음! 개발자
  • 33.
  • 34.
    SVN은 대충 쓰는거아니다! ㆍRepository - 프로젝트 파일 및 변경 정보가 저장되는 장소 ㆍImport - 빈 Repository에 맨 처음 파일들을 채우는 것 ㆍCheckout - Repository에서 프로젝트 관련 파일들을 받아 오는 것 ㆍCommit - Checkout한 파일의 수정사항을 갱신 ㆍRevision - Commit 할 때 마다 카운트 되는 번호 ㆍUpdate - Checkout한 파일들을 최신의 것으로 갱신 ㆍExport - 버전관리 파일들을 뺀 순수 파일만 빼내는 것 용어 정도는 걍 외워라… 개발자
  • 35.
    SVN은 대충 쓰는거아니다! ㆍTag - 개념적으로 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것이다. 즉 Revision 번호 그자체에 해당한다. ㆍ Branch - 브런치 생성은 복사와 같은 개념이다. 물론 Tag도 비슷하다. Backup 해두는 정도로 생각하면 될듯하다. ㆍ Trunk - 프로젝트에서 가장 중심이 되는 디렉토리로 소스와 파일들이 포함된 다. 이건 중요하다! 어떤 폴더를 어떻게 쓰는지 는 알아야겠지? 개발자
  • 36.
    SVN은 대충 쓰는거아니다! ㆍTag - 개념적으로 특정 시점에서 프로젝트의 스냅샷을 찍어두는 것이다. 즉 Revision 번호 그자체에 해당한다. ㆍ Branch - 브런치 생성은 복사와 같은 개념이다. 물론 Tag도 비슷하다. Backup 해두는 정도로 생각하면 될듯하다. ㆍ Trunk - 프로젝트에서 가장 중심이 되는 디렉토리로 소스와 파일들이 포함된 다. 이건 중요하다! 어떤 폴더를 어떻게 쓰는지 는 알아야겠지? 개발자
  • 37.
  • 38.
    진짜 이젠 이해할수 있겠지? Tag 1.0 Tag Branch Trunk 2.0 따로 개발 해야하는군! 버전별로 달리! 3.0 Tag 그림으로 설명하면… 개발자
  • 39.
    잠깐…CVS랑 뭐가 다름? 나보다 잘난게 ???? 없는데? CVS SVN
  • 40.
    잠깐…CVS랑 뭐가 다름? 너님 스크립트제공 함? 너님 리비전 단위가 뭐임? ㅈㅅ 너님 속도빠름? ㅈㅅ SVN 너님 디렉토리도 CVS 버전별 관리됨? ㅈㅅ 너님 동시커밋됨?
  • 41.
    잠깐…CVS랑 뭐가 다름? ㆍ커밋 단위가 파일이 아닌 체인지셋입니다. ㆍ CVS에 비해 엄청나게 빠른 업데이트/브랜칭/태깅 시간이 CVS보다 21배 빠름 ㆍ 파일 이름 변경, 이동, 디렉토리 버전 관리도 지원. ㆍ 원자적 커밋. CVS에서는 여럿이 동시 커밋할 때 종종 충돌이 발생하는데 Subversion에서는 더 이상 그런 일이 없어졌습니다. ㆍ 양방향 데이터 전송으로 네트워크 소통량 최소화합니다. ㆍ 트리별, 파일별 접근 제어 리스트. 저장소 쓰기 접근을 가진 개발자라도 아무 소스나 수정하지 못하게 조절할 수 있습니다. ㆍ 저장소/프로젝트별 환경 설정 가능 ㆍ 확장성을 염두에 둔 구조, 깔끔한 소스 ㆍ 커밋 통지 메일 스크립트 기본 제공. CVS에서라면 스크립트를 따로 구해서 써야 하는 번거로움이 있었지만, Subversion은 기본 제공 스크립트를 이용해서 훨씬 손쉽게 설정이 가능합니다.
  • 42.
  • 43.
    진짜 이젠꼭 쓰는걸로~수 있겠지? SVN은 이해할 Tag 1.0 Tag Branch Trunk 2.0 따로 개발 해야하는군! 버전별로 달리! 3.0 Tag 그림으로 설명하면… 개발자