목차
어떤 프로토콜을 사용하여 저장소에 액세스하든, 최소한 하나의 저장소를 생성해야 합니다. 이는 Subversion 명령줄 클라이언트 또는 TortoiseSVN으로 수행할 수 있습니다.
아직 Subversion 저장소를 생성하지 않았다면, 지금 생성할 때입니다.
모든 저장소의 루트로 사용될 SVN이라는 이름의 빈 폴더(예: D:\SVN\)를 생성하십시오.
D:\SVN\ 안에 MyNewRepository라는 다른 폴더를 생성하십시오.
명령 프롬프트(또는 DOS-Box)를 열고 D:\SVN\으로 이동한 후 다음을 입력하십시오.
svnadmin create --fs-type fsfs MyNewRepository
이제 D:\SVN\MyNewRepository에 새 저장소가 생성되었습니다.
Windows 탐색기를 엽니다.
새 폴더를 만들고 예를 들어 SVNRepository라고 이름을 지정합니다.
새로 생성된 폴더에서 오른쪽 클릭하고 → 을 선택합니다.
그러면 새 폴더 안에 저장소가 생성됩니다. 이 파일들을 직접 편집하지 마십시오!!! 오류가 발생하면 폴더가 비어 있고 쓰기 방지되어 있지 않은지 확인하십시오.
저장소 내부에 디렉터리 구조를 생성할지 여부도 묻습니다. 레이아웃 옵션에 대한 자세한 내용은 “저장소 레이아웃” 섹션에서 확인하십시오.
TortoiseSVN은 저장소를 생성할 때 사용자 지정 폴더 아이콘을 설정하여 로컬 저장소를 더 쉽게 식별할 수 있도록 합니다. 공식 명령줄 클라이언트를 사용하여 저장소를 생성하는 경우에는 이 폴더 아이콘이 할당되지 않습니다.
또한 로컬 테스트 목적 외에는 file:// 액세스를 전혀 사용하지 않는 것이 좋습니다. 서버를 사용하는 것이 단일 개발자 사용을 제외한 모든 경우에 더 안전하고 안정적입니다.
로컬 저장소에 액세스하려면 해당 폴더의 경로가 필요합니다. Subversion은 모든 저장소 경로를 file:///C:/SVNRepository/ 형식으로 예상한다는 점을 기억하십시오. 전체적으로 슬래시가 사용됩니다.
네트워크 공유에 있는 저장소에 액세스하려면 드라이브 매핑을 사용하거나 UNC 경로를 사용할 수 있습니다. UNC 경로의 형식은 file://ServerName/path/to/repos/입니다. 여기에는 선행 슬래시가 2개만 있다는 점에 유의하십시오.
SVN 1.2 이전에는 UNC 경로를 file:///\ServerName/path/to/repos와 같이 더 모호한 형식으로 지정해야 했습니다. 이 형식은 여전히 지원되지만 권장되지는 않습니다.
이론적으로는 FSFS 저장소를 네트워크 공유에 두고 여러 사용자가 file:// 프로토콜을 사용하여 액세스할 수 있지만, 이는 절대로 권장되지 않습니다. 사실, 여러 가지 이유로 이를 강력히 권장하지 않으며, 이러한 사용을 지원하지 않습니다.
첫째, 모든 사용자에게 저장소에 대한 직접적인 쓰기 액세스 권한을 부여하므로, 어떤 사용자라도 실수로 전체 저장소를 삭제하거나 다른 방식으로 사용할 수 없게 만들 수 있습니다.
둘째, 모든 네트워크 파일 공유 프로토콜이 Subversion이 요구하는 잠금을 지원하는 것은 아니므로, 저장소가 손상될 수 있습니다. 즉시 발생하지는 않겠지만, 언젠가 두 사용자가 동시에 저장소에 액세스하려고 시도할 수 있습니다.
셋째, 파일 권한이 제대로 설정되어야 합니다. 네이티브 Windows 공유에서는 어느 정도 가능할 수 있지만, SAMBA에서는 특히 어렵습니다.
어떤 사람이 저장소 형식을 업그레이드하는 최신 버전의 클라이언트를 설치하면, 다른 모든 사용자는 새 클라이언트 버전으로 업그레이드하기 전까지 저장소에 액세스할 수 없습니다.
file:// 액세스는 로컬, 단일 사용자 액세스, 특히 테스트 및 디버깅 목적으로만 사용됩니다. 저장소를 공유하려면 정말로 적절한 서버를 설정해야 하며, 생각만큼 어렵지 않습니다. 서버 선택 및 설정에 대한 지침은 “저장소 액세스” 섹션을 참조하십시오.
데이터를 저장소로 가져오기 전에 데이터를 어떻게 구성할지 먼저 생각해야 합니다. 권장되는 레이아웃 중 하나를 사용하면 나중에 훨씬 더 쉬워질 것입니다.
저장소를 구성하는 몇 가지 표준적이고 권장되는 방법이 있습니다. 대부분의 사람들은 개발의 “메인 라인”을 담을 trunk 디렉터리, 브랜치 복사본을 담을 branches 디렉터리, 그리고 태그 복사본을 담을 tags 디렉터리를 생성합니다. 저장소가 하나의 프로젝트만 포함하는 경우, 종종 이러한 최상위 디렉터리를 생성합니다.
/trunk
/branches
/tags
이 레이아웃이 매우 일반적으로 사용되기 때문에, TortoiseSVN을 사용하여 새 저장소를 생성할 때 디렉터리 구조를 생성해 주겠다고 제안할 것입니다.
저장소가 여러 프로젝트를 포함하는 경우, 사람들은 종종 브랜치별로 레이아웃을 인덱싱합니다.
/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
...또는 프로젝트별
/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
프로젝트가 밀접하게 관련되어 있지 않고 각각 개별적으로 체크아웃되는 경우 프로젝트별로 인덱싱하는 것이 합리적입니다. 모든 프로젝트를 한 번에 체크아웃하거나 프로젝트가 단일 배포 패키지로 묶여 있는 관련 프로젝트의 경우 브랜치별로 인덱싱하는 것이 종종 더 좋습니다. 이렇게 하면 하나의 트렁크만 체크아웃하면 되고, 하위 프로젝트 간의 관계를 더 쉽게 확인할 수 있습니다.
최상위 /trunk /tags /branches 접근 방식을 채택하는 경우, 모든 브랜치와 태그에 대해 전체 트렁크를 복사해야 한다는 규칙은 없으며, 어떤 면에서는 이 구조가 가장 큰 유연성을 제공합니다.
관련 없는 프로젝트의 경우 별도의 저장소를 사용하는 것이 더 좋을 수 있습니다. 변경 사항을 커밋할 때 변경되는 것은 프로젝트의 리비전 번호가 아니라 전체 저장소의 리비전 번호입니다. 관련 없는 두 프로젝트가 하나의 저장소를 공유하면 리비전 번호에 큰 간격이 생길 수 있습니다. Subversion 및 TortoiseSVN 프로젝트는 동일한 호스트 주소에 나타나지만, 완전히 별개의 저장소로서 독립적인 개발을 가능하게 하고 빌드 번호에 대한 혼란이 없습니다.
물론, 이러한 일반적인 레이아웃을 무시해도 됩니다. 자신이나 팀에 가장 적합한 어떤 종류의 변형도 만들 수 있습니다. 무엇을 선택하든 영구적인 약속이 아니라는 점을 기억하십시오. 언제든지 저장소를 재구성할 수 있습니다. 브랜치와 태그는 일반 디렉터리이므로, TortoiseSVN은 원하는 대로 이동하거나 이름을 변경할 수 있습니다.
하나의 레이아웃에서 다른 레이아웃으로 전환하는 것은 일련의 서버 측 이동 명령을 내리는 것에 불과합니다. 저장소의 구성 방식이 마음에 들지 않으면 디렉터리를 이리저리 변경하면 됩니다.
따라서 아직 저장소 내부에 기본 폴더 구조를 생성하지 않았다면 지금 생성해야 합니다. 이를 달성하는 두 가지 방법이 있습니다. 단순히 /trunk /tags /branches 구조를 생성하려면 저장소 브라우저를 사용하여 세 개의 폴더를 생성할 수 있습니다(세 번의 별도 커밋으로). 더 깊은 계층 구조를 생성하려면 먼저 디스크에 폴더 구조를 생성하고 다음처럼 단일 커밋으로 가져오는 것이 더 간단합니다.
하드 드라이브에 새 빈 폴더를 생성합니다.
해당 폴더 안에 원하는 최상위 폴더 구조를 생성합니다 - 아직 파일은 넣지 마십시오!
이 폴더 구조를 포함하는 폴더에서 오른쪽 클릭하고 → 를 선택하여 이 구조를 저장소로 가져옵니다. 가져오기 대화 상자에서 저장소 URL을 입력하고 확인을 클릭합니다. 이렇게 하면 임시 폴더가 저장소 루트로 가져와져 기본 저장소 레이아웃이 생성됩니다.
가져오는 폴더의 이름은 저장소에 나타나지 않고, 그 내용만 나타난다는 점에 유의하십시오. 예를 들어, 다음 폴더 구조를 생성합니다.
C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
C:\Temp\New를 저장소 루트로 가져오면 다음과 같이 보일 것입니다.
/trunk
/branches
/tags