Main Content

SVN 소스 컨트롤 설정하기

MATLAB®은 Subversion®(SVN) 샌드박스와 리포지토리를 사용할 수 있는 내장 SVN 연동 기능을 제공합니다. 이는 MATLAB에 내장되어 구현되기 때문에, SVN을 설치할 필요가 없습니다. 내장 SVN 연동은 보안 로그인을 지원합니다. 이 연동에서는 기존에 설치된 SVN을 무시합니다.

SVN 소스 컨트롤 옵션

MATLAB에서 제공되는 SVN 버전을 사용하려면 소스 컨트롤에서 파일을 가져올 때 소스 컨트롤 연동 목록에서 SVN을 선택하십시오. 자세한 지침은 SVN 리포지토리에서 체크아웃하기 항목을 참조하십시오. MATLAB 내장 SVN 연동을 사용하여 새 샌드박스를 만들면 이 샌드박스는 MATLAB이 제공하는 최신 버전의 SVN을 사용합니다.

주의

소스 컨트롤을 사용하기 전에 먼저 파일 손상을 방지하기 위해 소스 컨트롤 툴을 사용하여 이진 파일을 등록해야 합니다. SVN에 이진 파일 등록하기 항목을 참조하십시오.

내장된 버전 이외의 SVN 버전을 사용해야 하는 경우 커맨드 라인 SVN 연동(호환성 모드) 소스 컨트롤 연동 옵션을 사용하여 리포지토리를 만들 수 있지만, 이렇게 하려면 커맨드 라인 SVN 클라이언트도 설치해야 합니다.

커맨드 라인 SVN 연동은 명령줄 인터페이스를 지원하는 아무 Subversion(SVN) 클라이언트와 통신할 수 있습니다. 커맨드 라인 SVN 연동(호환성 모드)를 사용하면 파일이나 폴더의 이름을 @ 문자가 포함된 이름으로 바꾸려고 하는 경우 커맨드 라인 SVN이 @ 기호 다음의 모든 문자를 기준 수정본 값으로 처리하기 때문에 오류가 발생합니다.

SVN에 이진 파일 등록하기

타사 소스 컨트롤 툴을 사용하는 경우, .mlx, .mat, .fig, .mlapp, .mdl, .slx, .mdlp, .slxp, .sldd.p와 같은 MATLAB 및 Simulink® 파일 확장자를 이진 형식으로 등록해야 합니다. 또한 .mexa64, .mexmaci64, .mexmaca64, .mexw64와 같은 MEX 파일의 확장자도 등록합니다. 확장자를 등록하지 않으면, 라인 끝(EOL) 문자 변경, 토큰 확장, 키워드 대체, 또는 자동 병합 시도 등을 통해 파일을 제출할 때 이러한 툴이 파일을 손상시킬 수 있습니다. MATLAB 외부에서 소스 컨트롤 툴을 사용하는 경우나 먼저 파일 형식을 등록하지 않은 채로 MATLAB에서 파일을 제출하려고 하는 경우에 손상이 발생할 수 있습니다.

다른 파일 확장자가 이진 형식으로 등록되어 있는지 확인하여 체크인 시 손상되지 않도록 하십시오. .xlsx, .jpg, .pdf, .docx 등의 파일 확장자를 확인하고 등록하십시오.

MATLAB에서 제공되는 내장 SVN 연동을 포함하여 임의의 버전의 SVN을 사용하는 경우 이진 파일을 등록해야 합니다. 확장자를 이진 형식으로 등록하지 않는 경우, SVN은 충돌이 난 MATLAB 파일에 주석을 추가하고 자동 병합을 시도할 수 있습니다. SVN을 사용 시 이 문제를 방지하려면 다음과 같이 파일 확장자를 등록하십시오.

  1. SVN config 파일을 찾도록 합니다. 다음 위치에서 파일을 찾습니다.

    • C:\Users\myusername\AppData\Roaming\Subversion\config 또는 C:\Documents and Settings\myusername\Application Data\Subversion\config(Windows®의 경우)

    • ~/.subversion (Linux® 또는 macOS의 경우)

  2. config 파일이 없는 경우 새로 만듭니다. SVN config(구성) 파일 생성하기 항목을 참조하십시오.

  3. 기존 config 파일이 있다면 이전에 SVN을 설치했다는 것입니다. config 파일을 편집합니다. 기존 SVN config(구성) 파일 업데이트하기 항목을 참조하십시오.

SVN config(구성) 파일 생성하기

  1. SVN config 파일이 없는 경우 다음 라인이 포함된 텍스트 파일을 만듭니다.

    [miscellany]
    enable-auto-props = yes
    [auto-props]
    *.mlx = svn:mime-type=application/octet-stream
    *.mat = svn:mime-type=application/octet-stream
    *.fig = svn:mime-type=application/octet-stream
    *.mdl = svn:mime-type=application/octet-stream
    *.slx = svn:mime-type= application/octet-stream
    *.mlapp = svn:mime-type= application/octet-stream
    *.p = svn:mime-type=application/octet-stream
    *.mdlp = svn:mime-type=application/octet-stream
    *.slxp = svn:mime-type=application/octet-stream
    *.sldd = svn:mime-type=application/octet-stream
    *.slxc = svn:mime-type=application/octet-stream
    *.mlproj = svn:mime-type=application/octet-stream
    *.mldatx = svn:mime-type=application/octet-stream
    *.slreqx = svn:mime-type=application/octet-stream
    *.sfx = svn:mime-type=application/octet-stream
    *.sltx = svn:mime-type=application/octet-stream
  2. 체크인 시 손상 방지를 위해 이진 형식으로 등록해야 하는, 사용 중인 다른 파일 형식이 있는지 확인합니다. MEX 파일(.mexa64, .mexmaci64, .mexw64), .xlsx, .jpg, .pdf, .docx 등의 파일이 있는지 확인합니다. 필요한 각 파일 형식에 대한 라인을 config 파일에 추가합니다. 예제:

    *.mexa64 = svn:mime-type=application/octet-stream
    *.mexw64 = svn:mime-type=application/octet-stream
    *.mexmaci64 = svn:mime-type=application/octet-stream
    *.xlsx = svn:mime-type=application/octet-stream
    *.docx = svn:mime-type=application/octet-stream
    *.pdf = svn:mime-type=application/octet-stream
    *.jpg = svn:mime-type=application/octet-stream
    *.png = svn:mime-type=application/octet-stream
  3. 파일 이름을 config로 지정하고 이 파일을 적절한 위치에 저장합니다.

    • C:\Users\myusername\AppData\Roaming\Subversion\config 또는 C:\Documents and Settings\myusername\Application Data\Subversion\config(Windows의 경우)

    • ~/.subversion (Linux 또는 macOS의 경우).

SVN config 파일을 만들고 나면 SVN은 이 확장자를 가진 파일을 이진 형식으로 취급합니다. 리포지토리에 이미 이진 파일이 있는 경우 리포지토리에 이미 있는 파일 등록하기 항목을 참조하십시오.

기존 SVN config(구성) 파일 업데이트하기

기존 config 파일이 있다면 이전에 SVN을 설치했다는 것입니다. 파일을 이진 형식으로 등록하려면 config 파일을 편집하십시오.

  1. 텍스트 편집기에서 config 파일을 편집합니다.

  2. [miscellany] 섹션을 찾아 다음 라인이 yes로 설정되어 auto-props를 활성화하는지 확인합니다.

    enable-auto-props = yes 
    이 라인이 주석 처리되어 있지 않도록 하십시오. 즉, #로 시작하지 않아야 합니다. 구성 파일에는 주석 처리된 예제 라인이 포함될 수 있습니다. 라인 시작 부분에 # 문자가 있는 경우, 삭제합니다.

  3. [auto-props] 섹션을 찾습니다. [auto-props]가 주석 처리되어 있지 않도록 하십시오. 시작 부분에 # 문자가 있는 경우, 삭제합니다.

  4. [auto-props] 섹션 끝부분에 다음 라인을 추가합니다.

    *.mlx = svn:mime-type=application/octet-stream
    *.mat = svn:mime-type=application/octet-stream
    *.fig = svn:mime-type=application/octet-stream
    *.mdl = svn:mime-type=application/octet-stream
    *.slx = svn:mime-type= application/octet-stream
    *.mlapp = svn:mime-type= application/octet-stream
    *.p = svn:mime-type=application/octet-stream
    *.mdlp = svn:mime-type=application/octet-stream
    *.slxp = svn:mime-type=application/octet-stream
    *.sldd = svn:mime-type=application/octet-stream
    *.slxc = svn:mime-type=application/octet-stream
    *.mlproj = svn:mime-type=application/octet-stream
    *.mldatx = svn:mime-type=application/octet-stream
    *.slreqx = svn:mime-type=application/octet-stream
    *.sfx = svn:mime-type=application/octet-stream
    *.sltx = svn:mime-type=application/octet-stream
    
    이 라인을 추가하면 충돌 시 SVN이 MATLAB 파일과 Simulink 파일에 주석을 추가하지 않으며 자동 병합이 수행되지 않습니다.

  5. 체크인 시 손상 방지를 위해 이진 형식으로 등록해야 하는, 사용 중인 다른 파일 형식이 있는지 확인합니다. MEX 파일(.mexa64, .mexmaci64, .mexw64), .xlsx, .jpg, .pdf, .docx 등의 파일이 있는지 확인합니다. 사용하는 각 파일 형식에 대한 라인을 config 파일에 추가합니다. 예제:

    *.mexa64 = svn:mime-type=application/octet-stream
    *.mexw64 = svn:mime-type=application/octet-stream
    *.mexmaci64 = svn:mime-type=application/octet-stream
    *.xlsx = svn:mime-type=application/octet-stream
    *.docx = svn:mime-type=application/octet-stream
    *.pdf = svn:mime-type=application/octet-stream
    *.jpg = svn:mime-type=application/octet-stream
    *.png = svn:mime-type=application/octet-stream
  6. config 파일을 저장합니다.

SVN config 파일을 만들거나 업데이트하고 나면 SVN이 새 파일을 이진 형식으로 취급합니다. 리포지토리에 이미 파일이 있는 경우 리포지토리에 이미 있는 파일 등록하기에서 설명된 대로 파일을 등록하십시오.

리포지토리에 이미 있는 파일 등록하기

주의

SVN config 파일을 변경해도 SVN 리포지토리로 이미 커밋된 파일에는 영향을 미치지 않습니다. 파일이 이진 형식으로 등록되어 있지 않으면 svn propset을 사용하여 수동으로 파일을 이진 형식으로 등록하십시오.

리포지토리의 파일을 수동으로 이진 형식으로 등록하려면 커맨드 라인 SVN에서 다음 명령을 사용하십시오.

svn propset svn:mime-type application/octet-stream binaryfilename

표준 리포지토리 구조

표준 tags, trunk, branches 폴더를 사용하여 리포지토리를 만들고 trunk에서 파일을 체크아웃하십시오. Subversion 프로젝트에는 이 구조가 권장됩니다. https://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html을 참조하십시오.

이 구조로 리포지토리를 만든 후에는 소스 컨트롤 상황별 메뉴에서 태그를 클릭하여 모든 파일에 태그를 추가할 수 있습니다. 자세한 내용은 파일의 버전에 태그 지정하기 항목을 참조하십시오.

파일의 버전에 태그 지정하기

SVN의 경우, 태그를 사용하여 모든 파일의 특정 수정본을 식별할 수 있습니다. SVN에서 태그를 사용하려면 리포지토리에 표준 폴더 구조가 필요하며 trunk에서 파일을 체크아웃해야 합니다. 표준 리포지토리 구조 항목을 참조하십시오.

  1. 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 태그를 선택합니다.

  2. 태그 텍스트를 지정하고 제출을 클릭합니다. 태그가 폴더의 모든 파일에 추가됩니다. 리포지토리에 tags 폴더가 없는 경우에는 오류가 나타납니다.

참고

소스 컨트롤에서 태그 지정된 버전의 파일을 가져올 수는 있지만, 이 파일에 새 태그를 사용하여 다시 태그를 지정할 수는 없습니다. 새로운 태그를 만들려면 trunk에서 체크아웃해야 합니다.

파일 편집 전에 강제 잠금 설정하기

사용자가 파일을 편집하기 전에 필수적으로 잠그도록 설정하려면 지정된 확장자를 갖는 파일을 읽기 전용으로 만들도록 SVN을 구성하십시오. 파일이 읽기 전용인 경우 파일을 편집하려면 먼저 현재 폴더 브라우저를 마우스 오른쪽 버튼으로 클릭한 후 소스 컨트롤 > 파일 잠그기를 선택해야 합니다. 이렇게 설정하면 파일을 잠그지 않고서는 편집을 할 수 없게 됩니다. 파일이 잠겨 있으면 이 파일이 편집 중임을 다른 사용자가 알 수 있으므로 병합 문제를 방지할 수 있습니다.

파일에 강제로 잠금을 설정하려면 SVN config 파일의 항목을 수정하십시오. SVN config 파일이 있는 위치를 찾으려면 SVN에 이진 파일 등록하기 항목을 참조하십시오.

  1. 확장자가 .m인 파일을 읽기 전용으로 만들려면 SVN config 파일의 [auto-props] 섹션에 속성을 추가하십시오. 확장자가 .m인 파일에 대한 항목이 없으면 needs-lock 속성이 포함된 항목을 새로 추가하십시오.

    *.m = svn:needs-lock=yes

    이 항목이 있으면 속성을 어떤 순서로든 함께 지정할 수 있지만, 여러 항목을 세미콜론으로 구분하여 한 라인에 지정해야 합니다.

  2. 확장자가 .mlx인 파일을 읽기 전용으로 만들려면 SVN config 파일의 [auto-props] 섹션에 속성을 추가하십시오. 확장자가 .mlx인 파일을 이진 형식으로 등록해야 하므로, 파일 형식에 대한 항목이 있어야 합니다. 항목에 needs-lock 속성을 원하는 순서로 추가하되, 같은 라인에 세미콜론으로 구분하여 지정하십시오.

    *.mlx = svn:mime-type=application/octet-stream;svn:needs-lock=yes 
  3. 구성이 적용되도록 샌드박스를 다시 만듭니다.

이렇게 설정하면 확장자가 .m인 파일을 편집하기 전에 먼저 파일 잠그기를 선택해야 합니다. SVN 파일 잠그기 항목을 참조하십시오.

Subversion 리포지토리 공유하기

리포지토리를 공유하려면 서버를 설정해야 합니다. svnserve 또는 Apache™ SVN 모듈을 사용할 수 있습니다. 다음 웹 페이지를 참조하십시오.

참고

프로덕션 환경에서는 file:/// protocol을 사용하여 파일 시스템을 통해 원격 리포지토리를 사용하지 마십시오. 파일 프로토콜은 안전하지 않습니다. 동시 액세스가 리포지토리를 손상시킬 수 있습니다.

관련 항목