CocoaPods и вилки GitHub

Это мой первый раз, когда вы открываете проект GitHub, и я не слишком компетентен с CocoaPods, поэтому, пожалуйста, несите меня.

В принципе, я разветкил проект на GitHub, используя следующее в моем Podfile:

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

Затем я внес некоторые изменения в fork, и, конечно, когда я сделал pod install для установки другого модуля, он переустановил оригинальный REActivityViewController и удалил мои изменения.

Я понимаю, что мне нужно подталкивать свои изменения к своей вилке перед другой pod install, но как мне это сделать, поскольку это репо, установленное CocoaPods? Я посмотрел папку REActivityViewController, установленную в папке Pods, и нет файлов git.

Нужно ли мне работать над своей вилкой вне моего проекта, а затем использовать CocoaPods для установки изменений? Это слишком громоздко из рабочего процесса.

Или мне нужно что-то делать с подмодулями?

Ответ 1

Я отвечу на этот вопрос, используя пример. У меня есть вилка TTTAttributedLabel с дополнительной функциональностью, которую я добавил здесь:

https://github.com/getaaron/TTTAttributedLabel

Чтобы использовать это в проекте Cocoapods, I:

  • Вставьте мои изменения в свою вилку
  • Настройте мой подфайл для получения изменений и обновления

Как только вы переместили свои изменения на свою вилку, получите SHA вашего последнего фиксации. Вы можете сделать это, используя git rev-parse origin/master | pbcopy или на GitHub фиксирует страницу для вашего проекта: Screenshot of copying a commit's SHA on GitHub

Затем вы можете указать конкретную фиксацию на своей вилке в своем подпикселе следующим образом:

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

После этого pod update обновит эту конкретную фиксацию из вашей вилки. Если вы хотите, вы также можете сделать podspec для своей вилки, но я считаю этот подход более простым, и я не делаю изменений достаточно часто, чтобы оправдать новый рабочий процесс.

Нужно ли мне работать над своей вилкой вне моего проекта, а затем использовать Cocoapods для установки изменений? Таким образом, обременительный рабочий процесс.

Вы можете сделать это таким образом, но я обычно:

  • Отредактируйте код внутри моего проекта и убедитесь, что он работает.
  • Скопируйте изменения на свою вилку,
    • экспорт патча или
    • копирование по всему файлу исходного кода
  • Зафиксировать и нажать на Github
  • Обновите подфайл с новым SHA
  • Запустите pod update.

Или мне нужно что-то делать с подмодулями?

Нет, вам не нужно.

Ответ 2

Другой вариант - иметь ссылку на проект напрямую, а не через 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

enter image description here