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?
2 answers
Responderé esta pregunta usando un ejemplo. Tengo una bifurcación de TTTAttributedLabel con alguna funcionalidad adicional que agregué aquí:
Para usar esto en un proyecto Cocoapods, I:
- Empujar mis cambios a mi tenedor
- 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:
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:
- Edita el código dentro de mi proyecto y asegúrate de que funciona
- Copie los cambios a mi bifurcación, por
- exportando un parche, o
- copiando todo el archivo de código fuente
- Confirmar y enviar a Github
- Actualizar el Podfile con el nuevo SHA
- Ejecutar
pod update
.
O necesito hacer algo con submódulos?
No, no es necesario.
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
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