다음의 글은 애플의 Developer Connection 의 Using Subversion with Xcode 3 on Mac OS X Leopard 의 글을 참고하여 작성되었습니다.
서브버전 서버를 설정하기 전에, svnserve 서버를 사용할 것인지 아니면 Apache 에서 mod_dav_svn 모듈을 사용할 것인지 먼저 결정해야 합니다. 여기서는 svnserve 를 사용하여 설정하도록 하겠습니다. (Apache 의 모듈을 이용한 방식은 위의 링크에서 확인 할 수 있습니다.)
1. 서브버전 저장소 생성하기
터미날을 열고 웹서버 어디서든 접근 가능하도록 아래와 같이 /Library 디렉토리 하위에 서브버전이 사용할 저장소를 생성합니다.
| mkdir -p /Library/Subversion/Repository |
다음으로 서브버전 관리용 툴을 사용해서 프로젝트 디렉토리를 저장소 내에 생성합니다. (여기서는 HelloWorld 라고 하겠습니다.)
| svnadmin create /Library/Subversion/Repository/HelloWorld |
그리고 여러분의 프로젝트에서 필요한 스켈레톤 디렉토리(trunk, branches, tags)를 /tmp 디렉토리에 생성합니다.
| mkdir -p /tmp/HelloWorld/trunk mkdir -p /tmp/HelloWorld/branches mkdir -p /tmp/HelloWorld/tags |
아래의 명령어를 사용해서 생성한 디렉토리를 저장소로 임포트 시킵니다.
| svn import /tmp/HelloWorld file:///Library/Subversion/Repository/HelloWorld -m "Initial import" |
임포트가 완료되면 /tmp 디렉토리에 생성한 임시 디렉토리를 삭제합니다.
| rm -rf /tmp/HelloWorld |
마지막으로 저장소에 사용 권한을 부여합니다.
| sudo chown -R root:admin /Library/Subversion/Repository
sudo chmod -R ug+rwX,o= /Library/Subversion/Repository |
2. svnserve 서버 실행하기
Mac OS X 레오파드 에서 svnserve 바이너리는 사전에 컴파일 된 형태로 제공되어 ssh 서버 (sshd)가 요구하는 즉시 svnserve 를 시작하게 되므로 따로 데몬 형태로 svnserve 를 실행할 필요가 없습니다. 그러므로 저장소가 정해진 장소에 있고 sshd 가 서버에서 실행중이라면, svnserve 는 항상 연결을 받을 수 있게 됩니다.
주의할 점은, sshd 를 서버에서 실행하기 위해서는 아래 그림과 같이 "시스템 환경설정" 애플리케이션에서 "공유" 아이콘을 클릭하고 서비스 중 "원격로그인" 을 사용하겠다고 선택된 상태여야 한다는 것입니다.

3. Xcode 에서 서브버전 사용하기
Xcode 를 실행하고 상단의 메뉴에서 "SCM > Configure SCM Repository ... " 를 선택합니다. 아래와 같은 설정창이 나타나는데 아래와 같이 입력 합니다. URL 을 입력하면 Scheme, Host, Path 가 자동으로 입력됩니다.
모든 설정이 올바르게 입력되었 다면, 그림과 같이 하단에 Authenticated 라고 출력됩니다.

다음으로는 프로젝트를 아래와 같이 저장소로 임포트 합니다.
- Xcode 의 메뉴에서 "SCM > Repositories" 를 선택합니다.
- 저장소 브라우저가 열리면, 저장소 이름(여기서는 HelloWorld)를 선택하고 "trunk" 디렉토리를 선택합니다.
- 저장소 브라우저 툴바의 "Import" 아이콘을 클릭합니다.
- 그리고 새로 열린 탐색 창에서 HelloWorld 프로젝트 디렉토리를 선택하고 (저의 경우는 "/Users/likejy/code/workspaceXcode/HelloWorld" 디렉토리를 선택하였습니다.) 하단의 "Import" 버튼을 클릭합니다.


이렇게 한번 저장소에 저장된 프로젝트의 사본은 더이상 디스크에 사본을 보관할 필요가 없으며, 저장소에서 해당 프로젝트를 체크아웃 해오면 디스크에 작업 디렉토리 사본이 생기게 됩니다. 따라서 SCM 에서 체크아웃 하기 전에 먼저 생성되어 있던 디렉토리를 삭제하세요. 저의 경우는 위의 "/Users/likejy/code/workspaceXcode/HelloWorld" 디렉토리를 삭제하였습니다. (중요한 프로젝트 였다면, 혹시 모르니 다른 이름으로 디렉토리명을 변경하거나 백업해 두시길 바랍니다.)
다음으로 저장소에 저장된 프로젝트를 아래와 같이 체크아웃 해 봅니다.
- Xcode 의 메뉴에서 "SCM > Repositories" 를 선택합니다.
- 저장소 브라우저가 열리면, "HelloWorld > trunk > HelloWorld" 를 디렉토리를 선택합니다.
- 브라우저 툴바의 "Checkout" 아이콘을 클릭하면 CheckOut 을 해올 디렉토리를 선택하게 됩니다. 원문에 서는 서브버전을 이용해서 버전관리를 하는 프로젝트의 경우 별도의 디렉토리에 저장하라고 하지만, 저의 경우는 원래 디렉토리가 위치해 둔 디렉토리 "/Users/likejy/code/workspaceXcode 를 선택하였습니다.
- 다시한번 하단의 "Checkout" 버튼을 클릭하고 성공적으로 완료되었다면, 아래와 같이 다시한번 창이 뜨게 됩니다. "Open HelloWorld.xcodeproj" 버튼을 클릭합니다.


열린 Xcode 화면에서 프로젝트를 선택하고 "Info" 아이콘을 클릭합니다. 아래와 같이 화면 하단에 SCM 저장소를 선택하는 부분이 "None" 으로 되어 있을 것입니다. 이것을 "HelloWorld (Subversion) - Recommended" 로 선택합니다.

그리고 아래와 같이 ctrl 을 누른채 마우스를 클릭하여 "SCM" 을 선택합니다. 이제 해당 프로젝트내의 파일을 수정하게 되면, 별도의 SCM 칼럼에 저장소의 파일과 다르게 변경되었다는 표시가 나타나게 됩니다.

0 개의 댓글:
댓글 쓰기