C'est la première fois que je bifurque sur un projet GitHub, et je ne suis pas trop compétent avec CocoaPods non plus, alors soyez patient avec moi.
Fondamentalement, j'ai bifurqué un projet sur GitHub en utilisant ce qui suit dans mon Podfile
:
pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'
J'ai ensuite apporté quelques modifications à la fourche, et bien sûr, quand j'ai fait un pod install
pour installer un autre module, il a réinstallé le REActivityViewController
d'origine et a effacé mes modifications.
Je me rends compte que je dois pousser mes modifications sur ma fourche avant un autre pod install
, mais comment dois-je faire étant donné qu'il s'agit d'un dépôt installé par CocoaPods? J'ai regardé dans le dossier REActivityViewController
installé sous le dossier Pods
et il n'y a pas de fichiers git.
Dois-je travailler sur ma fourchette en dehors de mon projet, puis utiliser CocoaPods pour installer les modifications? C'est trop lourd d'un workflow.
Ou dois-je faire quelque chose avec des sous-modules?
Je vais répondre à cette question en utilisant un exemple. J'ai un fork de TTTAttributedLabel avec quelques fonctionnalités supplémentaires que j'ai ajoutées ici:
Afin de l'utiliser dans un projet Cocoapods, je:
Une fois que vous avez poussé vos modifications dans votre fork, récupérez le SHA de votre dernier commit. Vous pouvez le faire en utilisant git rev-parse Origin/master | pbcopy
ou sur la page de validation de GitHub pour votre projet:
Ensuite, vous pouvez spécifier le commit spécifique sur votre fork dans votre Podfile comme ceci:
pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'
Après ça, pod update
mettra à jour ce commit particulier depuis votre fork. Si vous le souhaitez, vous pouvez également créer un podspec
pour votre fork, mais je trouve cette approche plus simple et je n'apporte pas de modifications assez fréquemment pour justifier un nouveau workflow.
Dois-je travailler sur ma fourchette en dehors de mon projet, puis utiliser Cocoapods pour installer les modifications? C'est trop lourd pour un workflow.
Vous pouvez le faire de cette façon, mais j'ai l'habitude:
pod update
.Ou dois-je faire quelque chose avec des sous-modules?
Non, tu n'en as pas besoin.
Une autre option est d'avoir votre projet référencé directement le pod et non via github. De cette façon, vous n'avez pas à continuer à valider votre fork ou à copier/coller du code juste pour tester vos modifications. Vous pouvez travailler avec deux projets Xcode différents simultanément et vous engager séparément dans leurs projets respectifs.
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
Documentation CocoaPods: http://guides.cocoapods.org/using/the-podfile.html#using-the-files-from-a-folder-local-to-the-machine