2014-01-05 38 views
86

這是我第一次分叉一個GitHub項目,而且我也不能勝任CocoaPods,所以請耐心等待。CocoaPods和GitHub叉

基本上,我分叉在GitHub上一個項目,用我的Podfile如下:

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

我那麼做了一些修改叉,當然,當我做了pod install安裝的另一盒就重新安裝了原始REActivityViewController並刪除了我的更改。

我意識到我需要將我的更改推到另一個pod install之前,但我該如何做,因爲這是由CocoaPods安裝的回購?我查看了安裝在Pods文件夾下的REActivityViewController文件夾,並且沒有任何git文件。

我是否需要在我的項目之外工作,然後使用CocoaPods安裝更改?這對於工作流程來說太麻煩了。

或者我需要做一些子模塊嗎?

回答

135

我會用一個例子回答這個問題。我有TTTAttributedLabel的一些額外的功能叉子我這裏補充:

https://github.com/getaaron/TTTAttributedLabel

爲了使用這一個的CocoaPods項目,我:

  1. 把我改變我叉
  2. 配置我的Podfile以獲取更改&更新

將更改推送到您的分支後,獲取上次提交的SHA。 Screenshot of copying a commit's SHA on GitHub

然後,你可以指定你的叉子的具體承諾在您的Podfile這樣的:您可以在此使用git rev-parse origin/master | pbcopy或在GitHub commits page爲你的項目做

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

之後,pod update將更新這個特別的提交從你的叉子。如果你願意,你也可以爲你的fork創建一個podspec,但我發現這種方法更簡單,我不會經常進行更改以證明新的工作流。

是否需要在我的項目之外工作,然後使用Cocoapods安裝更改?這是繁瑣的工作流程。

你能做到這樣,但我通常:

  1. 編輯代碼我的項目中,並確保它的工作原理
  2. 複製的變化到我的叉子,通過
    • 導出補丁或
    • 複製整個源代碼文件
  3. 提交&推Github上
  4. 更新Podfile新SHA
  5. 運行pod update

還是我需要做一些子模塊?

不,你不需要。

+0

後續問題:所以更新Podfile新SHA真的是必要的嗎? 'pod install'不會僅僅用最新的commit來自動克隆最新的版本? – Ramsel

+0

如果您將項目重命名爲不同的項目並創建自己的podspec文件,則可以將其指向自己的repo並使用'pod'MyForkName',:head'代替。 –

+1

':head:'指向最新的提交,但不能在同一行使用':git'和':head'。 –