System Compleat.

'Xcode 4.4.1'에 해당되는 글 1건

  1. Github with Xcode4

Github with Xcode4

Techs

( younjin.jeong@gmail.com, 정윤진 )


인프라 기술자가 Xcode 를 사용한다는 것은 사실 엄청나게 흔한 일은 아니라고 생각한다. 나 역시도 맥북을 구매한지 벌써 2년이 넘어가지만, brew 를 사용한 맥용 패키지 관리에 필요하다는 이유로 Xcode 를 설치만 해 두고 있었다. 우분투라면 build-essential 패키지면 될 것을 어마어마한 덩치를 자랑하는 Xcode 를 왜 굳이 컴파일러와 분리해 두지 않았나 하는 생각이었달까. 


하지만 언제나 어플리케이션 디렉토리 한 구석에 자리잡은 망치는 vi 와 터미널이 슬슬 버거워 지는 '자동화 코드' 를 쓰기 시작하면서 점점 흥미를 일으켜 왔다. 뭐 물론 훨씬 가볍고 좋은 도구들이 많지만, 가끔씩 구동해서 텍스트를 넣어 보면 그 예쁘디 예쁜 syntax highlighting 이라던가, 자동 완성 등의 팬시한 모습이 '언젠간 쓰고 말꺼야' 하는 마음을 가지게 만들었다. 역시, 애플의 가장 큰 매력의 원천은 디자인으로 인한 호기심 유발, 그리고 사용해 보니 단순히 예쁜것이 아니라 기능도 좋다 라는 믿음이 발생하게끔 제품을 만드는 것이 아닌가 싶다. 



그대는 너무 아름답소



아무튼 최근의 대부분의 오픈소스 프로젝트들이 sourceforge 에서 github 로 옮겨 가면서, 이제 github 는 개발자건 관리자에게건 아주 중요한 업무의 장이 되어가고 있다. 우리 회사의 경우에도 github 에 private 계정을 만들어 사용중인데, 사내에 서버를 두고 별도로 관리 하는 것 보다 훨씬 낫다. 더군다나 웹 Front-end, Back-end 와 인프라 기술자가 각각 관장하는 코드를 하나의 저장소에서 작업하기 때문에, 또 나중에 장사 안되는 프로토타입은 open source 로 전향 할 가능성이 많기 때문에, 이 github 의 사용성은 우리에게는 축복이다. 


하여, Xcode 4 와 github 를 좀 같이 사용하면 참 좋겠다 싶은 생각에 그동안 미뤄왔던 Xcode 삽질을 오늘 시작 해 보았는데, 이 좋은 도구를 사용함에 있어 말도 안되는 부분에서 난관에 봉착하여 포스팅을 해 볼 까 한다. 그 난관이란 다름아닌 바로, 


"Xcode 의 Project 와 github 에서 받아온 repository 가 연동이 안된다." 


는 초딩스러운 문제다. 그렇다. 웃겨도 할 수 없다. 

대충 설명 하자면, 난관의 순서는 다음과 같았다. 


1. XCode 의 프로젝트는 반드시 신규 생성만 되며, 신규 생성할 때 "꼭" 디렉토리를 생성한다. 

2. XCode 에서 신규 프로젝트를 생성 할 때에는 기본으로 로컬 repository 를 생성한다. 

3. 따라서, 기존에 git clone 으로 받아온 working repository 를 직접 Xcode 에 추가 하려면 /PATH/TO/REPO/${PROJECT_NAME} 과 같은 거지 같은 형태가 된다. 

4. 해서 프로젝트를 먼저 생성 한 후에 .git 디렉토리를 init 시도를 해 보아도 연동이 되지 않았다. 



아무리 개발자가 아니라도 내 시스템 통밥이 몇년인데 이런거로 헤메자니 자괴감 마저 들었다는... 

일단 본인이 해결 한 방법은 다음과 같다. 



1. 원하는 디렉토리에 먼저 Xcode 로 File -> New -> Project 로 프로젝트를 생성한다. 본인의 경우 Xcode 에서 제공하는 컴파일러 및 라이브러리를 사용하지 않기 때문에 Empty 프로젝트를 선택 했다. 



음.. 이런 스크린샷까지 찍어버리다니!




2. Next 를 누르면, Project 이름을 묻는다. 아무리 테스트라도 나쁜 단어로 지지 하지 말자. 





3. 다음을 누르면 프로젝트가 사용 할 디렉토리를 선택하라고 한다. 



여기서 주의 할 것은, "Create local git repository for this project" 버튼의 체크를 해제 해야 한다는 것이다. 

이게 은근히 불편한 것이, Xcode 를 무시하고 터미널 작업과 같은 CLI 에 의존하는 경우 낭패를 보는 경우가 있다. 하지만 더 웃긴건, 어떤 부분에서는 CLI 로 처리를 해 주어야만 동작한다는 것. 



4. Create 버튼을 누르면 프로젝트는 생성이 완료된다. 해당 디렉토리로 가 보면, Xcode 에서 관리를 위한 무언가 디렉토리를 하나 생성해 두었다. 아마도 프로젝트 이름.xcodeproj 라는 이름의 디렉토리 일 것이다. 


기존에 있는 git repository 를 clone 해서 디렉토리를 사용 할 수 없기 때문에, git remote add origin 을 사용하여 코드를 가져온다. git 에 대해서는 별도의 설명은 하지 않는다. 한가지 더, 맥에서 git 를 설치하는 방법은 다루지 않는다. 궁금하신 분은 os x brew 로 구글링. 


Younjins-MacBook-Pro:Velox younjinjeong$ pwd
/Users/younjinjeong/Xcode/Velox
Younjins-MacBook-Pro:Velox younjinjeong$ git init 
Initialized empty Git repository in /Users/younjinjeong/Xcode/Velox/.git/
Younjins-MacBook-Pro:Velox younjinjeong$ git remote add origin https://github.com/XXXXXXXXXX/velox.git
Younjins-MacBook-Pro:Velox younjinjeong$ git pull 
remote: Counting objects: 251, done.
remote: Compressing objects: 100% (208/208), done.
remote: Total 251 (delta 38), reused 237 (delta 24)
Receiving objects: 100% (251/251), 622.49 KiB | 116 KiB/s, done.
Resolving deltas: 100% (38/38), done.
From https://github.com/XXXXXXXXXX/velox
 * [new branch]      master     -> origin/master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull  ').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:
    [branch "master"]
    remote = 
    merge = 

    [remote ""]
    url = 
    fetch = 

See git-config(1) for details.
Younjins-MacBook-Pro:Velox younjinjeong$ git branch -a 
  remotes/origin/master
Younjins-MacBook-Pro:Velox younjinjeong$ git checkout master 
Branch master set up to track remote branch master from origin.
Already on 'master'
Younjins-MacBook-Pro:Velox younjinjeong$ git branch -a 
* master
  remotes/origin/master
  remotes/origin/velox-Railway
Younjins-MacBook-Pro:Velox younjinjeong$ ls 
Velox.xcodeproj	app.js		dropbox.js	models		package.json	public		services	swauth		swift		views
Younjins-MacBook-Pro:Velox younjinjeong$ git pull 
Already up-to-date.


5. .gitignore 파일에 Xcode 에서 생성한 디렉토리를 추가한다. 


Younjins-MacBook-Pro:Velox younjinjeong$ echo "Velox.xcodeproj/*" >> .gitignore 




6. 이상 없이 모든게 완료 되었다면, 이제 다시 Xcode 로 돌아온다. Shift-CMD-2 를 누르면 Organizer 가 나타나는데, Repository Tab 에서 방금 작업한 디렉토리의 경로로 Repository 를 추가 해 준다. 



Type 이 Subversion 으로 걸리는 경우도 있는데, git repo 가 확실 하다면 git 로 선택 해 준다. 



7. Repository 의 추가가 완료 되면, 다음과 같은 화면을 볼 수 있다. Xcode 에서 Repository 를 체크하는 동안은 노랑색 아이콘이 표시되며, 확인이 완료되면 녹색으로 변경된다. 계속 주황색으로 머물러 있다면 경로나 github 의 계정을 체크 해 보도록 한다. 한가지 더, 간혹 Xcode 에서 github 사이트의 인증서가 확인이 안된다며 징징대는 경우가 있는데, 이때는 Certificate 버튼을 누르면 이 사이트는 항상 신뢰 와 비슷한 의미의 버튼을 찾아 볼 수 있다. 이 체크버튼을 활성화 하면 귀찮게 하지 않는다. 


일반적으로 github 를 커맨드 라인에서 사용할 때는 맥에 git 에 사용할 key chain 을 연동 할 수 있는데, 이는 매번 패스워드를 입력 할 필요가 없으므로 매우 유용하다. 단, key chain 에 시스템 부팅 후 처음 access 할 때에는 시스템의 패스워드를 묻는다. 






8. 이제 프로젝트 메인 화면으로 돌아오면, 처음 프로젝트를 생성 했을때와 마찬가지로 아무것도 보이지 않는다. 사실 일반적인 사용성을 가진다면 프로젝트의 디렉토리 정보를 가져다가 파일 및 디렉토리등으로 이루어진 코드들이 계층형으로 보여야 할 것 같은데, 아무것도 안보인다. 왼쪽 아래의 + 버튼을 이용하여 파일 및 디렉토리 추가를 선택하고, repository 내의 필요한 파일과 디렉토리를 모두 선택하여 추가 하도록 하자. 



하위의 디렉토리와 파일을 선택하여 모두 추가 하게 되면, 왼쪽의 프로젝트 브라우저에 계층형 구조로 추가된 디렉토리들이 리스팅된다. 이제 파일 중 하나를 살짝 변경하고 File -> Repository -> 탭으로 이동하면, 뭔가 Commit, Add, Push, Pull 과 같은 동작이 되어야 할 것 같은데, 아무것도 발생하지 않는다. 


만약 버튼이 활성화 되어 눌러보더라도, 다음과 같은 메세지가 발생한다. 



초저녁부터 자자는 얘기여 뭐여 - 타짜 광열씨 -



이것때문에 무던한 삽질을 했더랬다. 대체 왜 안되는지 모를 일이었다. 


결론은, Xcode 버그란다...


Xcode 한번 껐다 켜면 된단다.... 


윈도우냐... 



이 해법을 접하고 나서 살짝 멘붕이 올 뻔 했다. 하지만 역시 모든게 올바르게 동작하는 Xcode 는 세살배기 웃음마냥 사람 흐뭇하게 만드는 뭔가가 있다. 



이 화면은 commit 을 진행하면 나타나는데, 프로젝트 단위로 commit 이 필요한 파일의 목록을 보여준다. M 은 수정됨 의 의미이며, 신규 추가되는 경우에는 A 로 나타난다. 가운데의 코드는 당연히 diff 의 내용을 표시해 주는 것이며, 아래에는 commit 에 적용 될 메세지를 쓰는 부분이다. 


커밋하고 보면 Xcode 에서 이슈 관리 부분이 있는 것 같은데, Target 과 이슈 등을 적절히 사용하면 별다른 도구가 필요 없을 정도로 편리 할 것 같다. 


다 해 놓고 보니 별것도 아닌걸 가지고 한참을 헤멨다. 이영도님이 그랬던가. 혼돈의 신 헬카네스는 열쇠를 항상 가까운 곳에 숨겨둔다며... 


사실 그냥 몇 문장으로 그랬다 저랬다 해도 되는 내용이긴 하지만, 웬지 몇시간이나 날려버린게 서운해서 뻘포스팅 해 봤..;;; 


아참, 사용한 Xcode 버전은 4.4.1, 2012년 8월 7일 업데이트 버전인듯. 

이번 주말 및 다음주 초는 개 달려야지... 



덧1. 

왼쪽의 파일 브라우저와 같이 보이는 구조에서 실제 파일을 만들거나 하지 말아야 한다. 신규 생성하는 파일이 있다면 터미널에서 작업 해 주는 것이 안전하다. 이유인 즉슨, 실제 파일 및 디렉토리를 관리 하는 것이 아니라 논리적인 일종의 메타 브라우저인 것 같다. 이것때문에 또 한번 낭패를 볼 뻔. 


덧2. 

.gitignore 를 잘 설정 하지 않으면 엄한 파일들이 올라가므로 주의 할 것. 


( younjin.jeong@gmail.com, 정윤진 )