CocoaPods et GitHub forks

C’est la première fois que je réalise un projet GitHub, et je ne suis pas non plus très compétent avec CocoaPods, alors s’il-vous-plaît, supportez-moi.

En gros, j’ai créé un projet sur GitHub en utilisant ce qui suit dans mon Podfile :

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

J’ai ensuite apporté quelques modifications à la fourche et, bien sûr, lorsque j’ai pod install un pod install pour installer un autre pod, il a réinstallé le REActivityViewController origine et effacé mes modifications.

Je me rends compte que j’ai besoin de pousser mes modifications sur ma fourche avant une autre pod install , mais comment puis-je faire cela parce que c’est un repo installé par CocoaPods? J’ai regardé dans le dossier REActivityViewController installé sous le dossier Pods et il n’y a aucun fichier git.

Dois-je travailler sur mon fork en dehors de mon projet, puis utiliser CocoaPods pour installer les modifications? C’est trop encombrant 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 TTTAtsortingbutedLabel avec des fonctionnalités supplémentaires que j’ai ajoutées ici:

https://github.com/getaaron/TTTAtsortingbutedLabel

Pour pouvoir l’utiliser dans un projet Cocoapods, j’ai:

  1. Poussez mes modifications sur ma fourchette
  2. Configurer mon Podfile pour obtenir les modifications et mettre à jour

Une fois vos modifications apscopes à votre fourchette, récupérez le SHA de votre dernier commit. Vous pouvez le faire en utilisant git rev-parse origin/master | pbcopy git rev-parse origin/master | pbcopy ou sur la page de commits GitHub pour votre projet: Capture d'écran de la copie du SHA d'un commit sur GitHub

Ensuite, vous pouvez spécifier le commit spécifique sur votre fork dans votre Podfile comme ceci:

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

Après cela, 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 ne modifie pas assez fréquemment pour justifier un nouveau stream de travail.

Dois-je travailler sur mon fork en dehors de mon projet et ensuite utiliser Cocoapods pour installer les modifications? C’est trop lourd pour un workflow.

Vous pouvez le faire de cette façon, mais je le fais habituellement:

  1. Modifiez le code dans mon projet et assurez-vous qu’il fonctionne
  2. Copiez les modifications sur ma fourchette, en
    • exporter un patch ou
    • copier sur tout le fichier de code source
  3. S’engager et pousser à Github
  4. Mettre à jour le Podfile avec le nouveau SHA
  5. Exécutez la pod update .

Ou dois-je faire quelque chose avec des sous-modules?

Non, vous n’avez pas besoin

Une autre option consiste à faire en sorte que votre projet référence le pod directement et non via github. De cette façon, vous n’avez pas à continuer à utiliser votre fourchette 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

entrer la description de l'image ici