이미 프로젝트가 포함된 기존 리포토리로 가져오는 경우, 리포지토리 구조는 이미 결정되어 있을 것입니다. 새 리포지토리로 데이터를 가져오는 경우, 데이터를 어떻게 구성할지 시간을 들여 생각하는 것이 좋습니다. 더 자세한 조언은 “리포지토리 레이아웃” 섹션을 참조하십시오.
이 섹션은 디렉토리 계층 구조를 한 번에 리포지토리로 가져오기 위해 설계된 Subversion 가져오기 명령어를 설명합니다. 이 명령어는 작업을 수행하지만 몇 가지 단점이 있습니다.
전역 무시 설정을 사용하는 것 외에는 포함할 파일과 폴더를 선택할 방법이 없습니다.
가져온 폴더는 작업 사본이 되지 않습니다. 서버에서 파일을 다시 복사하려면 체크아웃을 해야 합니다.
리포지토리의 잘못된 폴더 수준으로 가져오기 쉽습니다.
이러한 이유로, 리포지토리에 초기 /trunk /tags /branches 구조를 생성하는 간단한 단계를 수행하는 경우가 아니라면, 가져오기 명령어를 전혀 사용하지 않고 “제자리에서 가져오기” 섹션에 설명된 두 단계 방법을 따르는 것을 권장합니다. 여기에 왔으니, 기본 가져오기 기능이 어떻게 작동하는지 알아보겠습니다...
프로젝트를 리포지토리로 가져오기 전에 다음을 수행해야 합니다.
프로젝트를 빌드하는 데 필요 없는 모든 파일(임시 파일, 컴파일러가 생성하는 파일(예: *.obj), 컴파일된 바이너리 등)을 제거하십시오.
파일을 폴더 및 하위 폴더로 정리하십시오. 나중에 파일 이름을 변경/이동할 수 있지만, 가져오기 전에 프로젝트 구조를 올바르게 정리하는 것을 강력히 권장합니다!
이제 Windows 탐색기에서 프로젝트 디렉토리 구조의 최상위 폴더를 선택하고 오른쪽 클릭하여 상황에 맞는 메뉴를 엽니다. → 명령을 선택하면 대화 상자가 나타납니다.
이 대화 상자에서는 프로젝트를 가져올 리포지토리 위치의 URL을 입력해야 합니다. 가져오는 로컬 폴더 자체가 리포지토리에 나타나지 않고, 그 내용만 나타난다는 것을 이해하는 것이 매우 중요합니다. 예를 들어, 다음과 같은 구조를 가지고 있다면,
C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
그리고 C:\Projects\Widget을 http://mydomain.com/svn/trunk로 가져오면, 하위 디렉토리가 Widget 하위 디렉토리에 있지 않고 곧바로 trunk로 들어가는 것을 보고 놀랄 수 있습니다. URL의 일부로 하위 디렉토리를 지정해야 합니다: http://mydomain.com/svn/trunk/Widget-X. 가져오기 명령은 리포지토리 내에 하위 디렉토리가 존재하지 않으면 자동으로 생성한다는 점에 유의하십시오.
가져오기 메시지는 로그 메시지로 사용됩니다.
기본적으로 전역 무시 패턴과 일치하는 파일과 폴더는 가져오지 않습니다. 이 동작을 재정의하려면 무시된 파일 포함 체크박스를 사용할 수 있습니다. 전역 무시 패턴 설정에 대한 자세한 내용은 “일반 설정” 섹션을 참조하십시오.
을 누르는 즉시 TortoiseSVN은 모든 파일을 포함한 전체 디렉토리 트리를 리포지토리로 가져옵니다. 이제 프로젝트는 버전 관리 하에 리포지토리에 저장됩니다. 가져온 폴더는 버전 관리 대상이 아닙니다! 버전 관리되는 작업 사본을 얻으려면 방금 가져온 버전을 체크아웃해야 합니다. 또는 제자리에서 폴더를 가져오는 방법을 알아보려면 계속 읽으십시오.
이미 리포지토리가 있고, 새 폴더 구조를 추가하려는 경우 다음 단계를 따르십시오.
리포지토리 브라우저를 사용하여 리포지토리에 직접 새 프로젝트 폴더를 만드십시오. 표준 레이아웃 중 하나를 사용하는 경우, 리포지토리 루트가 아닌 trunk의 하위 폴더로 만드는 것이 좋습니다. 리포지토리 브라우저는 Windows 탐색기와 마찬가지로 리포지토리 구조를 표시하므로, 구성 방식을 확인할 수 있습니다.
가져오려는 폴더 위에 새 폴더를 체크아웃하십시오. 로컬 폴더가 비어 있지 않다는 경고가 표시될 것입니다. 경고를 무시하십시오. 이제 버전이 지정된 최상위 폴더에 버전이 지정되지 않은 콘텐츠가 있습니다.
이 버전이 지정된 폴더에 → 를 사용하여 콘텐츠의 일부 또는 전부를 추가하십시오. 파일을 추가 및 제거하고, 폴더에 svn:ignore 속성을 설정하고, 필요한 다른 변경 사항을 적용할 수 있습니다.
최상위 폴더를 커밋하면, 기존 폴더에서 생성된 새 버전이 지정된 트리와 로컬 작업 사본을 갖게 됩니다.
때로는 사용자별 데이터가 포함된 파일을 버전 관리해야 하는 경우가 있습니다. 즉, 모든 개발자/사용자가 자신의 로컬 설정에 맞게 수정해야 하는 파일이 있다는 의미입니다. 그러나 이러한 파일을 버전 관리하는 것은 모든 사용자가 자신의 변경 사항을 매번 리포지토리에 커밋할 것이기 때문에 어렵습니다.
이러한 경우 템플릿 파일을 사용하는 것을 제안합니다. 개발자가 필요로 할 모든 데이터가 포함된 파일을 생성하고, 해당 파일을 버전 관리에 추가한 다음, 개발자가 이 파일을 체크아웃하도록 합니다. 그런 다음, 각 개발자는 해당 파일의 사본을 만들고 그 사본의 이름을 변경해야 합니다. 그 후에는 사본을 수정하는 것이 더 이상 문제가 되지 않습니다.
예를 들어, TortoiseSVN의 빌드 스크립트를 살펴보십시오. 이 스크립트는 리포지토리에 존재하지 않는 default.build.user라는 파일을 호출합니다. 오직 default.build.user.tmpl 파일만 존재합니다. default.build.user.tmpl은 모든 개발자가 사본을 만들어 default.build.user로 이름을 변경해야 하는 템플릿 파일입니다. 이 파일 안에는 사용자가 작동하도록 로컬 설정에 따라 편집하고 변경해야 할 줄을 볼 수 있도록 주석을 추가했습니다.
사용자를 방해하지 않기 위해, 우리는 또한 default.build.user 파일을 해당 상위 폴더의 무시 목록에 추가했습니다. 즉, 해당 파일 이름을 포함하도록 Subversion 속성 svn:ignore를 설정했습니다. 그렇게 하면 모든 커밋에서 버전이 지정되지 않은 것으로 표시되지 않습니다.