2013년 3월 10일 일요일

XCode 에서 svn서버 연동해서 소스 관리

출처: http://wizardee.tistory.com/109
혹시 저작권에 문제가 된다면 연락주시면 삭제하겠습니다.

1. 로컬디스크에 있는 프로젝트를 리모트 서버에 추가
Organizer에서 Add Repositories...로 추가
Location: svn://xxx.yyy.zzz/svn-root-dir/
Type: svn

Organizer의 Root를 선택 후 trunk폴더를 선택
mobile/ios/wowpad/trunk 가 선택된 걸 확인 후 import를 눌러 로컬디스크의 프로젝트 폴더의 루트 폴더를 선택 후 임포트.

Trunk에서 프로젝트가 임포트 된 걸 확인. 히스토리 확인도 여기서 가능.

2. 체크아웃
Trunk를 선택 후 다시 프로젝트 폴더를 선택 후 체크아웃. 로컬디스크의 프로젝트와 다른 폴더를 선택 할 것.

끝.


xcode에서 svn설정하는 방법에 대한 초간단 설명~!!
현재(2012년 9월4일) xcode의 버전은 요거다.

OS는 요거고..

1. 우선, xcode에서 프로젝트를 생성해 본다.(뭐든 상관없다. 여기선 empty application으로 생성~)
생성하면, 아래와 같이 디렉토리와 파일들이 주루룩 생성된다.
2. 이제 SVN연동을 한다. xcode 메뉴에서 Window -> Organizer 를 선택하고 Repositories를 선택하면 화면에 현재 연동하고 있는 SVN 서버 목록들이 보이거나 처음 연동이라면 아무것도 보이질 않을 것이다.
화면 좌측 하단에 '+' 메뉴를 눌러 SVN 서버를 추가한다.
3. Name은 원하는 이름을 쓰고, Location에는 SVN서버주소(IP도 상관없음)와 Repository명을 써 준다.(물론, 현재 접속하려는 SVN서버가 외부에서 접속이 가능하고 Repository 또한 생성이 되어 있다는 전제하에 설명하는 것임~!)
정상적으로 입력이 되면 아래 화면처럼 인증을 요구하는(Authentication required) 메세지와 함께
Type이 자동으로 Subversion으로 변경된다.(만약 Git서버거나 하면 git 타입으로 변경될 듯~)
-> 혹시 이미 전에 프로젝트 파일을 만들면서 git 기능을 추가했던 프로젝트 들은 계속 repository 가 svn 서버가 아닌 로컬 git 폴더로 될 때가 있는데, 해결 방법은 Finder에서 숨김파일 보기를 활성화 하고 프로젝트 폴더에 있는 .git 폴더를 삭제한 후, 다시 변경해 보면 된다.

자 그럼~ 입력이 다 되었으면, 과감하게 'Next'~!
4. SVN 디렉토리 관리 규칙이 있다면 그에 맞게 입력하고 그렇지 않다면 가볍게 'Add' 버튼 클릭~!
5. SVN연결이 되면 좌측에 SVN서버 정보와 'Root'라는 메뉴가 생성되고 해당 SVN서버에 접속을 위해
Username / Password를 입력하라는 화면이 나온다. 여기서 잠깐~!! 무슨 이유인지는 모르겠으나, 해당 SVN서버에 접속할 수 있는 계정이 패스워드가 지정되어 있으면, 나중에 파일 커밋등을 할 때 인증실패 에러가 발생한다.
이럴 땐, 해당 계정에 패스워드를 없애주면 해결이 되는데.. 이러한 원인을 검색을 해 본 결과, xcode에서는 입력받은 패스워드 정보를 막상 SVN에 접속할 때는 사용하지 않는다고 한다.(이런 말도 안되는 경우가.. ㅜㅠ)
암튼.. xcode에서 SVN접속할 때 사용되는 계정은 패스워드 없이 생성을 해 놓도록 한다.(이 부분은 많이 의심쩍긴  함. -.-a;;) 
6. SVN에 정상적으로 접속이 되면 현재 해당 Repository에 생성되어 있는 다른 프로젝트 정보들을 볼 수 있다.
7. 여기서 우측 하단에 import 메뉴를 선택하여, 좀전에 생성한 프로젝트를 SVN에 올린다.
8. 메세지(코멘트) 넣는 것도 습관화가 필요..(이렇게 디폴트 메세지 사용 말고.. ㅡ.ㅡ)
9. import가 정상적으로 되었다면, 아래 화면과 같이 디렉토리와 파일들이 보일 것이다.
10. 그리고 나서, 로컬에 있는 해당 프로젝트를 삭제하고 xcode를 다시 실행한다.(중요~!!)
이상하게 xcode에서는 SVN에 프로젝트를 올린 후에 로컬에 프로젝트를 삭제하고, SVN으로부터 다시 체크아웃 받아야 실제 SVN연동이 완료가 되는 것 같다.(아주 번거롭다.. 혹시 뭔가 다른 설정이 필요한 걸까??)

11. xcode가 재실행 되었으면, xcode메뉴에서 Window -> Organizer 를 선택한 후, 체크아웃 할 프로젝트를 선택한 후, 좌측하단에 있는 체크아웃 메뉴를 선택한다. 
12. 체크아웃이 완료가 되었으면, 해당 프로젝트를 open할 것이냐고 물어본다. 당근 open을 클릭하자~!
(다시한번 말하지만, 체크아웃 전에 반드시 로컬에 프로젝트를 삭제해 놔야 한다! -.-+)
13. 체크아웃이 정상적으로 되었다면, 파일 하나를 수정해 보자. 여기서는 main.m에 간단한 코드를 추가해 봤다.
14. 코드 추가 후, 해당 파일의 서브메뉴(?)에서 'Source Control -> Commit Selected Files'를 선택하면..
15. 로컬과 서버에 있는 파일을 비교해서 화면에 보여준다. 별 문제가 없으면, 반드시(!) 메세지(코멘트)에 적당한 문구를 넣고 commit 을 실행한다.(메세지를 넣을 때까지 화면이 넘어가지 않는다. ㅡ.ㅡa;;)
16. Window -> Organizer 를 선택해서 해당 프로젝트를 선택하면, 조금전 했던 작업에 대한 내용이 히스토리로 보여진다.

여기까지 보여졌다면, 일단 SVN 서버와의 연동은 끝났다고 볼 수 있다. 이클립스에서는 정말 간단하게 되었던 것들이 xcode에서는 왜이리 제대로 안되는 건지 이해가 안 된다. ㅜㅜ SVN 접속시 계정의 패스워드가 없어야 하는 것이나, 프로젝트 import 후 바로 SVN 연동이 되는 게 아니라, '로컬 폴더 삭제 -> 해당 프로젝트 그대로 체크아웃'을 해야 연동이 되는 것 역시나 이해가 ㅜㅠ;;(xcode를 수시로 재실행해야 하는 상황도 영~ ㅜㅠ.. 내가 뭘 그리 잘못한건지..)

이상, xcode와 SVN연동에 혹시나 참고가 될까 해서 정리해 본다~ :)

2013년 3월 3일 일요일