CocoaPods y GitHub horquillas


Esta es mi primera vez bifurcando un proyecto de GitHub, y tampoco soy demasiado competente con los CocoaPods, así que por favor tengan paciencia conmigo.

Básicamente, bifurcé un proyecto en GitHub usando lo siguiente en mi Podfile:

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

Luego hice algunos cambios en la bifurcación, y por supuesto cuando hice un pod install para instalar otro pod reinstaló el REActivityViewController original y borró mis cambios.

Me estoy dando cuenta de que necesito empujar mis cambios a mi tenedor antes que otro pod install, pero ¿cómo lo hago siendo que este es un repositorio instalado por CocoaPods? Busqué en la carpeta REActivityViewController instalada debajo de la carpeta Pods y no hay ningún archivo git.

¿Necesito trabajar en mi bifurcación fuera de mi proyecto y luego usar CocoaPods para instalar los cambios? Es un flujo de trabajo demasiado engorroso.

O tengo que hacer algo con submódulos?

Author: Aaron Brager, 2014-01-05

2 answers

Responderé esta pregunta usando un ejemplo. Tengo una bifurcación de TTTAttributedLabel con alguna funcionalidad adicional que agregué aquí:

Https://github.com/getaaron/TTTAttributedLabel

Para usar esto en un proyecto Cocoapods, I:

  1. Empujar mis cambios a mi tenedor
  2. Configurar mi Podfile para obtener los cambios y actualizar

Una vez que hayas empujado tus cambios a tu fork, obtén el SHA de tu último commit. Puedes hacer esto usando git rev-parse origin/master | pbcopy o en la página de confirmaciones de GitHub para tu proyecto: Captura de pantalla de copiar el SHA de una confirmación en GitHub

Entonces, puedes especificar la confirmación específica en tu fork en tu Podfile de la siguiente manera:

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

Después de eso, pod update actualizará este commit en particular desde tu fork. Si lo desea, también puede hacer un podspec para su bifurcación, pero encuentro este enfoque más simple y no hago cambios con la frecuencia suficiente para justificar un nuevo flujo de trabajo.

¿Necesito trabajar en mi tenedor fuera de mi proyecto y luego ¿usar Cocoapods para instalar los cambios? Esa es la manera de engorroso de un flujo de trabajo.

Puedes hacerlo de esta manera, pero normalmente:

  1. Edita el código dentro de mi proyecto y asegúrate de que funciona
  2. Copie los cambios a mi bifurcación, por
    • exportando un parche, o
    • copiando todo el archivo de código fuente
  3. Confirmar y enviar a Github
  4. Actualizar el Podfile con el nuevo SHA
  5. Ejecutar pod update.

O necesito hacer algo con submódulos?

No, no es necesario.

 154
Author: Aaron Brager,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-03 19:18:09

Otra opción es hacer que tu proyecto haga referencia al pod directamente y no a través de github. De esta manera no tienes que seguir confirmando tu bifurcación o copiando/pegando código solo para probar tus cambios. Puede trabajar con dos proyectos Xcode diferentes simultáneamente y comprometerse por separado en sus respectivos proyectos.

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

Documentación de CocoaPods: http://guides.cocoapods.org/using/the-podfile.html#using-the-files-from-a-folder-local-to-the-machine

introduzca la descripción de la imagen aquí

 30
Author: Oren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 19:21:10