CocoaPods 및 GitHub 포크


108

GitHub 프로젝트를 포크 한 것은 이번이 처음이며 CocoaPods에 능숙하지도 않으니 참아주세요.

기본적으로 다음을 사용하여 GitHub에서 프로젝트를 분기했습니다 Podfile.

pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'

그런 다음 포크를 약간 변경했으며 물론 pod install다른 포드를 설치 했을 때 원본을 다시 설치하고 REActivityViewController변경 사항을 지 웠습니다.

내 변경 사항을 다른 것보다 먼저 내 포크로 푸시해야한다는 것을 깨달았 pod install지만 이것이 CocoaPods에서 설치 한 저장소라는 점을 고려할 때 설치중인 포크인지 어떻게 알 수 있습니까? REActivityViewController폴더 아래에 설치된 폴더를 살펴 봤는데 Podsgit 파일이 없습니다.

프로젝트 외부에서 포크 작업을 한 다음 CocoaPods를 사용하여 변경 사항을 설치해야합니까? 작업 흐름이 너무 번거 롭습니다.

아니면 서브 모듈로 뭔가를해야합니까?

답변:


185

예를 들어이 질문에 답하겠습니다. 여기에 추가 한 몇 가지 추가 기능이있는 TTTAttributedLabel 포크가 있습니다.

https://github.com/getaaron/TTTAttributedLabel

Cocoapods 프로젝트에서 이것을 사용하기 위해, 나는 :

  1. 내 변경 사항을 내 포크로 푸시
  2. 변경 및 업데이트를 가져 오도록 내 Podfile 구성

변경 사항을 포크에 푸시하면 마지막 커밋의 SHA를 가져옵니다. git rev-parse origin/master | pbcopy또는 프로젝트 의 GitHub 커밋 페이지 에서이 작업을 수행 할 수 있습니다 . GitHub에서 커밋의 SHA 복사 스크린 샷

그런 다음 다음과 같이 Podfile의 포크에 특정 커밋을 지정할 수 있습니다.

pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'

그 후 pod update포크에서이 특정 커밋을 업데이트합니다. 원하는 경우 podspec포크를 만들 수도 있지만이 접근 방식이 더 간단하다고 생각하며 새 워크 플로를 정당화 할만큼 자주 변경하지 않습니다.

프로젝트 외부에서 포크 작업을 한 다음 Cocoapods를 사용하여 변경 사항을 설치해야합니까? 이것이 워크 플로우를 번거롭게하는 방법입니다.

이 방법으로 할 수 있지만 일반적으로 :

  1. 내 프로젝트 내에서 코드를 편집하고 작동하는지 확인하십시오.
  2. 변경 사항을 내 포크로 복사하십시오.
    • 패치 내보내기 또는
    • 전체 소스 코드 파일 복사
  3. GitHub에 커밋 및 푸시
  4. 새 SHA로 Podfile 업데이트
  5. 을 실행 pod update합니다.

아니면 서브 모듈로 뭔가를해야합니까?

아니요, 그럴 필요가 없습니다.


후속 질문 : 새 SHA로 Podfile을 업데이트하는 것이 정말 필요합니까? pod install최신 커밋으로 최신 버전을 자동으로 복제하지 않습니까?
Ramsel 2014 년

프로젝트의 이름을 다른 이름으로 바꾸고 자신 만의 podspec 파일을 만들면 자신의 저장소를 가리키고 pod 'MyForkName', :head대신 사용할 수 있습니다 .
Aaron Brager 2014 년

1
:head:최신 포인트 커밋,하지만 당신은 사용할 수 없습니다 :git:head같은 라인이다.
Aaron Brager 2014 년

4
이것은 공개 프로젝트의 사용자 정의 포크를 사용하기위한 완벽한 수정입니다. 제 경우에는 프로젝트를 분기하고 수정했으며 유지 관리자가 이러한 변경 사항을 병합 할 수 있도록 공개 PR을 받았지만 해당 변경 사항을 즉시 사용하도록 프로젝트의 Podfile을 업데이트하고 싶었습니다. 이것은 훌륭하게 작동했습니다!
cbowns

2
@AaronBrager " '<pod name>'에 대한 사양을 찾을 수 없습니다."라는 메시지가 표시됩니다. 해결 방법을 알고 있습니까?
Susim Samanta

34

또 다른 옵션은 프로젝트가 github를 통하지 않고 직접 포드를 참조하도록하는 것입니다. 이렇게하면 변경 사항을 테스트하기 위해 포크를 계속 커밋하거나 코드를 복사 / 붙여 넣기 할 필요가 없습니다. 두 개의 서로 다른 Xcode 프로젝트로 동시에 작업하고 개별 프로젝트에 개별적으로 커밋 할 수 있습니다.

pod 'AFNetworking', :path => '~/Documents/AFNetworking'

CocoaPods 문서 : http://guides.cocoapods.org/using/the-podfile.html#using-the-files-from-a-folder-local-to-the-machine

여기에 이미지 설명 입력


1
이것이 문제를 어떻게 해결합니까? 포드는 이러한 소스를 가져 와서 소스 프로젝트에 포드 프로젝트로 배치합니다. 이러한 파일 (현재 Pod을 통해 포함됨)에 대한 변경 사항은 '~ / Documents / AFNetworking'의 Git에서 추적하지 않습니다.
Raj Pawan Gumdal 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.