Xcode에서 "File > Source Control > Commit..."을 누른 후 "Commit Files" 버튼을 눌렀을 때 다음과 같은 오류 발생. (프로젝트 폴더내에 있는 폴더 하나를 지운 뒤의 증상이며, 어떤 방법이 되었든 임의로 폴더를 지운다고 해서 오류가 난다는게 못마땅한 상태)


The working copy "..." failed to commit files

fatal: could not switch to "/...": no such file or directory


결과적으로, 터미널에서 수동으로 커밋한 이후, Xcode에서도 정상적으로 수행되었다.


1. Xcode에서 Command Line Tool 설치

터미널에서 git을 실행하기 위해 필요하다.

"Xcode > Preferences..." 메뉴를 누른 후 Downloads 탭의 Components 섹션에서 "Command Line Tool"을 설치하기 위해 우측의 "Install" 버튼을 클릭.


2. 프로젝트 파일 구조를 다음과 같이 가정

/Users/Wisebee/Projects/Hello (프로젝트 폴더)

/Users/Wisebee/Projects/Hello.xcodeproj (프로젝트 파일)


3. 터미널 실행 후 다음 명령 수행

ls -al
cd "/Users/Wisebee/Projects/Hello/"
git commit -m "메시지"

1: .git 폴더가 보이는지 확인하기 위한 명령이다. 이 폴더가 있는 곳에서 작업이 올바로 수행된다. 이 폴더는 프로젝트 폴더 안에 있으며, "fatal: Not a git repository (or any of the parent directories): .git" 이란 메시지가 보인다면, 현재 경로에 .git 폴더가 없다는 것이고 프로젝트 폴더가 아니라는 말이다.

2: 경로에 스페이스가 없다면 따옴표는 생략해도 된다.

3: 메시지는 Xcode에서 커밋할 때 입력하는 메모와 같다. 커밋되는 버전에 대한 설명을 적으면 된다.


이후 Xcode에서도 커밋이 정상적으로 수행되었다.


*참조: 리파지토리 삭제후 재생성 방법

*오류 파일 직접 핸들링: git 명령 실행시 해당 파일을 찾을 수 없다고 나와 도움이 되지 않음

매우 분주하게 코딩을 하던 중, 기억나지 않는 키조합에 의해 인터페이스 빌더의 디자인 화면이 나와야 할 곳에 코드만 잔득 나열되어 있다. 다시 섹시한 모눈종이를 보는 방법을 찾기까지 5분정도의 시간만이 흘렀지만, 아주 바쁜 상황이었기 때문에 짜증이 순식간에 밀려왔다. 필자보다 더 많은 시간을 낭비할 수 있는 혹자를 위해 스냅샷 한장을 첨부한다.


.m(또는 .storyboard)와 .h 파일 쌍을 자동으로 볼 수 있는 분할뷰와 인터페이스 빌더의 스토리보드는 미친듯이 매력적이지만, 내 15인치 맥북프로의 화면이 '쪼바주께따'. 내 다음 맥북은 시리즈 중 가장 큰 스크린을 갖게 될 것을 믿어 의심치 않는다.



ADC에 게시된 날짜에 의하면 2011년 2월 3일 Xcode 4 GM seed가 포스트되었다. 그날은 수술과 입원생활을 끝내고 집으로 돌아와 회복세에 들어서던 중, 삼촌을 심하게 사랑하는 조카들이 온종일 매달리는 바람에 컨디션 난조를 겪어야 했던 설날이기도 했다. 큰 관심을 가지고 기다려 왔던 만큼, 새 프로젝트를 진행하면서 리마커블한 요소들을 살펴 본다.



1. 버전 관리, Xcode가 타임머신을 품다.

이제 혼자 로컬에서 프로젝트를 작성하더라도 Xcode 4에서 기본 제공하는 버전관리 기능을 쓸 수 있다. 새 프로젝트를 생성할 때 경로를 지정하는 창에서 사용 여부를 선택할 수 있는데, 기본값으로 버전 관리를 하도록 되어 있다.



프로젝트 네비게이터에서 버전을 유지하고 싶은 파일들(혹은 프로젝트 노드)을 선택해 우클릭을 하면 관련 메뉴가 보이는데, 'Commit Selected Files...' 를 눌러 코드 스냅샷을 저장한다.



Xcode의 우상단을 보면 버전 편집 뷰 버튼이 있다.



버전 편집 뷰의 좌측에는 현재 작업중인 코드가, 우측에는 가장 최근에 커밋된 현재 코드의 스냅샷이, 가운데에는 시간축이 나타나게 되며, 이 검은 배경의 시간축은 하단의 시계 아이콘을 누르면 표시된다.



시간축 영역을 절반으로 나누어, 왼쪽을 누르면 좌측 코드창에, 오른쪽을 누르면 우측 코드창에 해당 시점의 스냅샷이 표시되며, 현재 코드(Local Revision)가 선택되지 않았다면 아무리 코드를 수정하고 저장하여도 코드가 바뀌지 않는다. 경로처럼 보이는 하단의 점프바를 눌러도 다른 시점의 스냅샷을 선택할 수 있다.
//TODO: 꽤 열심히 들여다 봐도 롤백하는 방법을 찾지 못했다. 우측에서 복사 좌측에서 붙여넣기가 유일한 방법은 아니겠지?
우하단의 말풍선 처럼 생긴 Log 버튼을 누르면 스냅샷들을 보기좋게 나열해 준다.



누가 언제 편집한것인지와 커밋할 때 개발자가 적어 놓은 커맨트가 표시되는데, 'Initial Commit'은 프로젝트 생성 마법사가 생성 직후를 자동으로 커밋해 놓은 스냅샷이며 나머지 둘은 내가 커밋한 스냅샷이다.
오거나이저에서 Repositories 탭을 누르면 버전관리중인 모든 프로젝트의 목록을 볼 수 있으며, 파일을 드래그 해서 파인더로 복사할 수도 있다.



가장 위에 있는 저장소인 'Hello'는 'svn://localhost/...'으로 시작하는 경로가 지정되어 있는데, Mac OS에서 지원하는 svn을 이용해 Xcode 3에서 저장소를 연결한 경우이다. 터미널에서 root 권한으로 몇가지 수작업을 해야 하는데, 구글에서 찾은 어떤 블로그를 보고 Xcode에서는 처음으로 버전관리를 적용해 보았지만 이제는 필요 없게 되었다. Xcode 4를 다운로드 받기 불과 수십분 전의 일이다. (........................)

저장된 스냅샷들은 '.git'이라는 이름의 폴더 안에 저장되게 된다. 이 폴더는 숨겨져 있으며, 프로젝트 폴더 안에 있기 때문에 프로젝트 폴더를 복사해 다른 맥에서 불러와도 버전관리가 유지될 듯 보인다. 확인해보지 않아도 당연히 되겠지? 터미널에서 내용을 확인해 볼 수 있다.



멋지지 않은가? 이제 커밋할 때 커맨트를 잘 다는 습관을 기르기만 하면 된다.