2010-07-16 11 views
7

제 3 자 라이브러리를 최신 상태로 쉽게 유지하는 방법에 대해 질문하고 싶습니다.iphone : 제 3 자 라이브러리를 최신 상태로 유지하는 것이 좋습니다.

내 iPhone 프로젝트에서 제 3 자용 라이브러리 (TouchXML, JSON, RegexKit, YAJL, MGTwitterEngine ...)를 많이 사용합니다. 대부분은 GitHub에 저장되며, 특히 MGTwitterEngine의 버전은 매우 빠르게 변경됩니다 (새로운 기능 추가, 버그 수정, Server (트위터와 같은) 응답 형식 ...).

때로는 업데이트를 잊어 버립니다 (또한 안정 버전을 변경하지 않으려는 경우). 오래된 라이브러리로 인해 프로젝트에 버그가 발생하는 경우가 있습니다.

이전 라이브러리 때문에 버그가 발생했습니다. 자주 Github에 가서 새 버전을 다운로드 한 다음 많은 코드를 변경해야합니다. 새 버전을 다운로드한다는 것은 아주 오래된 버전에서 최신 버전으로 빨리 감기한다는 것을 의미합니다. 나는 도서관을 더 자주 업데이트하면 고통 스러울 것이라고 생각한다.

이 작업에 대한 접근 방식은 무엇입니까?

+0

답이없는 3 표. 왜? u는 몇 가지 의견을 줄 수 있습니까? – KONG

+1

다른 사람들 (저를 포함하여)도 당신의 질문에 관심이 있기 때문에 그 누구도 대답을하지 못했습니다. – Calvin

+0

대답이없는 경우 아이디어를 제기하고 의견을 나누십시오 :) 이 작업을 수행하는 스크립트를 작성할 수 있습니까? – KONG

답변

4

git submodules을 들여다 보았습니까?

나는이 작업을 위해 사용한다. 헬퍼 클래스 저장소가 있습니다. 그러나 우리가 추가로 & 개를 추가 할 때마다 우리는 모든 프로젝트에 이러한 개선 사항을 계단식으로 배치하기를 원합니다. 그래서 우리는 헬퍼 저장소를 각 프로젝트 저장소의 하위 모듈로 설정했습니다.

저장소의 루트 디렉토리 내에서 다음 명령을 시도해보십시오

git submodule add ssh://url/to/external/library.git local/path 

이 (위의 URL에서 그대로 촬영) 다음 단계를 수행해야합니다

  • 복제합니다 아래에 서브 모듈 현재 디렉토리에 저장되며 기본적으로 마스터 분기를 체크 아웃합니다.
  • .gitmodules 파일에 서브 모듈의 복제 경로를 추가하고 인덱스에 이 파일을 추가하여 커밋 할 준비가되었습니다.
  • 하위 모듈의 현재 커밋 ID를 색인에 추가하여 커밋 할 준비가되었습니다.

그런 다음 최신 물건을 유지하기 위해

git submodule update 

명령을 사용할 수 있습니다.

또한 내가하고있는 일을하고 있다면 (예 : 서브 모듈 저장소를 직접 변경) 서브 모듈의 루트 저장소 디렉토리로 가서 슈퍼 프로젝트를 커밋하기 전에 먼저 변경 사항을 커밋해야합니다 . 이것은 자식 모듈 (스마트)의 버전을 추적하기 때문에, 당신이 슈퍼 프로젝트를 먼저 커밋하면 하위 모듈 저장소에 커밋되지 않은 변경 사항에 대한 참조를 저장하게됩니다. 수퍼 프로젝트를 복제하려고하면 오류가 발생합니다.

+0

이 방법을 시도해 보겠습니다. 고마워, 푸우. – KONG

+0

+1 git submodules는 확실히 갈 길이 멀다. 우리는이 접근 방식을 많이 사용합니다. – Till

5

이제 2012 년입니다.이 질문 이후로 iOS 코드에서 프로젝트 종속성을 훨씬 쉽게 관리 할 수있는 두 가지 프로젝트가 등장했습니다. CocoaPodsVendorKit입니다. 둘 다 Ruby 의존 관리자 Bundler에서 영감을 얻었습니다. CocoaPod는 아마도 가장 성숙하고 활발한 프로젝트 일 것입니다.

망할 놈의 서브 모듈 프로젝트 및 종속성을 조직에 많은 도움이,하지만 여전히 종속성을 어기면 무엇이 잘못되었는지 파악은 말할 것도없고, 검색 경로와 링커 플래그를 잘받을 수있는 번거 로움이 될 수 있습니다. A와 B 모두 C에 의존하는 상황을 처리하는 것도 어렵습니다. A는 자신의 프로젝트이고 B와 C는 종속성입니다. 따라서 현재로서는 이러한 프로젝트 중 하나를 사용하고 다양한 라이브러리에 대한 사양을 작성하여 지원할 것이라고 조언합니다.

하스켈에서 구현 된 덜 알려진 Kit도 있습니다. 체크 아웃 할만한 가치가있다.

+0

모든 설정이 올바르게 설정되었는지 확인하기 위해 (search-paths, ...), 우리는 [this answer] (http://stackoverflow.com/questions/8343242/objective-c-how-to)에서 제안한대로 사용자 정의 프레임 워크를 사용합니다. -make-a-framework/8343513 # 8343513). – Till

관련 문제