본문 바로가기
SCM

SVN 형상관리

by Digital Audio Player 2021. 11. 3.

 

※ SVN 서버측/  개발자 측 구성으로 나뉨 ※ 

 

============================================================================

# SVN 서버측 세팅 ( SVN 서버 PC )

 

      1. SVN 서버 설치 및  서버 URL 받기 & 서버 ID/PW 설정 

              https://jerryjerryjerry.tistory.com/36

 

      2.  SVN 서버 IP 주소 확인 

IPv4 주소는 내부망 -> 외부망으로 변경하려면 공유기 접속 및 해당 ip 외부접근 허용 (외부 ip 는 구글에 '내 ip주소' 로 검색 )

 

         3. 개발자에게 서버 ID/PW 값과 SVN 서버 URL 전달        

( SVN server manager 에서 설정된 URL 중 파란박스영역을 SVN 서버 IP 주소로 기술하여 전달  -> 향후 로컬서버의 개발자가 SVN Repository 에 접근 할 URL )

                             * 위 보라색 박스 영역은 설정했던 ID 이며 ID/PW 정보도 개발자에게 전달                      

            

 

          4.  SVN 서버 PC 에서 프로젝트를 최초 업로드 (commit) 

                   (굳이 이클립스로 하지 않아도 될 듯 하지만 여기서는 이클립스로 ) 

                   https://jerryjerryjerry.tistory.com/37

                (위 링크 그대로 수행하면 해당 프로젝트에 대해 최초 업로드(commit) 이 되며 

              Head Revision 은 1 이된다.)

 

 

============================================================================

 

# 로컬서버 개발자측 ( SVN 서버 업로드 된 프로젝트 PULL) 

 

1. 이클립스 + SVN 연동 

        - 플러그인 설치 / 세팅  https://jerryjerryjerry.tistory.com/37

             ( 위 링크 12번 플러그인 설치까지만 진행 ) 

         

Subversive 없으면 아래와 같이 Subclipse 를 받는다

                     

 

        - 플러그인 설치 완료 후 

( 파란색 박스는 SVN IP 주소 )

 

( SVN 서버 ID/PW 기술 )

 

(SVN Repositories 탭에 SVN 서버 URL 생성됨)
(SVN URL 우클릭 -> Check Out -> SVN 서버 프로젝트 PULL )

                         

( SVN 서버의 프로젝트가 PULL 되어짐 )

 

 

 

2.  커밋 ( UPDATE -> 수정 -> COMMIT  )

 

      ※ 항상 프로젝트 UPDATE -> 수정 -> COMMIT 을 습관화 !! ※ (충돌방지)

          1. UPDATE 

( UPDATE 는 최신 HEAD REVISION 을 PULL 하는 것과 같음 ) 
(특정 파일 수정)

           

( 수정 후 프로젝트 우클릭 -> Team -> Synchronize with Repository )
YES 클릭

                    (  Synchronize with Repository  를 클릭하면 상단의 Team Synchronizing 탭으로 이동됨)

                        ( Synchronize with Repository  는 원격저장소(최신 revision) 와 로컬 소스를 비교해줌 )

                                                    ( 수정 파일의 충돌 여부도 알려줌 )

           

         

수정 된 파일을 클릭하면 로컬/원격 라인 비교를 해줌 
파일 우클릭 -> Synchronize 
파일 우클릭 -> commit

 

 

 

 

3. 원격저장소에서 커밋 된 소스 확인하기 

  

          - 이클립스 하단 SVN Repositories 에서 원격저장소 URL COPY              

          - 브라우저 URL 입력창에 복사 후 접근    

( 원격 저장소 이며 커밋된 소스를 확인해본다 )

                        * 여기서 빨간 박스는 revision 버전 넘버를 뜻한다 -> 커밋 할 때 마다 카운트됨 * 

 

 

 

 

4. 커밋 충돌 원인 & 충돌 대처 

       

      1) 충돌 원인 ? 

            - 위의 3 번 항목  리비전 넘버가 23 으로 되어있음 ( 최신 리비전 : Head Revision )             

이클립스 프로젝트 명 옆에 리비전 넘버가 기술 됨 

           - 

              위의 23 은 해당 프로젝트 UPDATE 를 진행했기 때문에 최신 revision 넘버가 기술됨 

               ( 이렇게 update -> 수정 -> commit 을 하면 문제없이 커밋 가능 ) 

             

          -

             하지만, 기본적으로 프로젝트를 UPDATE 하지 않고 파일을 수정 후 Synchronizing with Repository

             를 진행하면  충돌표시(해당 파일옆에 빨간색 화살표) 가 생긴다 

                 (프로젝트 옆에 최신 revision 넘버인지 확인해야함. 위의 23 보다 낮은

              22 revision 넘버이면 수정 후 커밋 할 때 원격저장소의 revision 넘버인 23 버전과 충돌하기 때문 ) 

 

 

 

     2) 충돌 대처            

기본적으로 3가지 방법 (이외에도 특정 리비전으로 update 하는 방법도 있음) 

        

           - 예  1 )  update 안하고 파일 수정 후 Synchornize with Repository 클릭 시 

충돌이 일어난 파일 
개발자 협의 후 -> 로컬 소스를 서버에 반영 할 지 ? 서버 소스를 로컬에 반영 할지 ?
선택 후 Synchronize -> commit 하면 정상적으로 commit 된다

 

 

           - 예 2 ) update 하지 않고 파일 수정 후 update (pull) 클릭 시 

              

                   

      * 수정 된 파일에서 mine (로컬 수정 소스 ) 와 head revision (저장소 최신version) 인

          r25 소스 가 함께 기술됨.  이럴 때, 개발자와의 협의를 통해 원하는 소스 하나를 정하고

           프로젝트 우클릭 -> Synchronize with Repository    

Mark as Merged -> commit 하면 최신 리비전으로 커밋 성공 

   

 

 

 

4. PS 

         - show history ( revision ) 

              프로젝트 우클릭 > Team > Show History 

현재 프로젝트 revision history 를 이클립스에서 확인가능 

 

 

> 참조 < 

SVN 관련 사이트 참조 ( SVN 서버설치 / SVN +이클립스 연동 / SVN + 이클립스 사용 : project push/pull )

https://jerryjerryjerry.tistory.com/55

 

[SVN] SVN 사용 방법, 다른 사람의 SVN Project를 사용해보자

* SVN이란? - SVN이란 사용자들이 작업한 파일 또는 소스를 SVN 서버에 올려 다른 협업자들이 업데이트 및 수정작업을 할 때 쓰이는 용도로 현업에서 프로젝트 및 실무에 많이 쓰입니다. - 즉, 하나

jerryjerryjerry.tistory.com