Blog Content

    티스토리 뷰

    svn 과 형상 관리

    subversion 은 버젼 관리 시스템 중 하나로 
    기본적으로 버젼 관리 시스템이란 어떤 파일을 누가 언제 어떻게 변경 했는지에 대한 이력을 버젼으로 기록 하고 관리 하는 시스템이다. 

    여러명이 하나의 파일을 수정하다가 충돌이 나는것으로 conflict 또는 collision 이라고 하는데
    이를 방지 하기 위한 구조적 방식에 두가지가 있다. 

    • Lock 모델 
              누군가 편집하고 있는 파일을 잠가 둬서 다른 멤버가 일절 편집을 하지 못하도록 하는 방법으로 과거 전통적인 버젼 관리 방식으로 같은 파일을 여럿이 함께 수정하지 못한다. 
             주요한 특성으로 
             항상 수정 전체 해당 파일을 체크아웃 해 줘야 하며 파일 단위로 이력을 관리 한다. 






    • Merge 모델
               파일을 잠그지 않고 개발자가 복사본을 체크아웃 해서 편집 후 리포지토리에 커밋 시
               차이가 있는 지를 확인 해서 머지 후 다시 커밋 하도록 요구하는 구조

             Copy – Modify – Merge 방식이므로 같은 파일을 여럿이 수정할 수 있다.
            변경 내용을 리비전 단위로 관리하므로 이력 추적이 매우 쉽다
    •        리비젼 : 어떤 문제가 있을 경우 과거 임의의 시점으로 ( 리비젼)으로 되돌릴수 있다. 
         이러한 리비젼방식은 크게  File 기반과 Changeset  기반으로 구분할수 있다. 
           파일 기반 : 파일 하나하나에 별도의 리비젼 번호를 부여하여 관리
           체인지셋기반 : 체인지 셋이란 복수의 파일에 걸쳐 있는 변경을 논리적으로 하나로 간주하는 단위로 체인지셋 기반은  이 단위로 리비전 번호를 부여 한다.  ( 전체의 정합성이 유지된 상태에서의 관리가 용이하다 ) 
         태그 관리는 이런 리비전 번호와 별도로 이름을 붙일수 있는 기능을 말한다. 

             

        





    1. 맥에서   subversion 을 설치 하기 위한 방법  중   brew 를 통해 간단하 설치하겠습니다  

        가.  subversion   설치  url   http://subversion.apache.org/packages.html#osx



    /**
       brew 
    */




    subversion  은  apache  open source  project 로 매뉴얼도  제공 

    1.  repository  create   [ 저장소 생성하기 
    [thisness@local:/Users/thisness]svnadmin  create ~thisness/devel/src/svn/to/repos

    생성된 표준 저장소  디렉토리의 구성은 아래와 같다.




    1. project  setup
    일반적으로 subversion 저장소는 많은 프로젝트를 가지고 있을수 있다. 
    subversion 에서 브랜치와 태그, 그리고 리비전등의 개념을 가지고 있으며
    이를 위해 추천되는 디렉토리 구조는 아래와 같다. 

    ~/devel/myprojects
    하위 디렉토리에  2개의 프로젝트  proj_pattern_study  ,   proj_spring_study 
    와 같이 프로젝트 디렉토리를 만들고 각 프로젝트 디렉토리 하위에
    아래와 같이  버젼 관리를 위한  디렉토리를 만든다 
       
    • branches : 메인 개발 라인으로 부터 분리된 브랜치 명을 가지고 있다. 
    • tags : "Release 1.0” 과 같이 쉽게 읽을수 있도록 명명된 프로젝트 저장소 
    • trunk : 메인 개발 작업이 저장되는 장소


    1.  project  import
    ~user/devel/src/svn/dev-repos 디렉토리를 subversion 저장소로 사용함

    1. simple  project  checkout    







    • 관련 링크 



    Comments