Trabajando con submodules git / cocoapods

Estoy trabajando en un proyecto que incluye otros repositorys de Git.

Me gustaría estar al día con estos repositorys. Sepa cuáles son las últimas características, correcciones de errores, etc. Qu 1) ¿Cuál es la mejor manera de mantenerse actualizado con un repository en Git sin recibir correos electrónicos de todos los problemas informados, etc.?

Una vez completado esto, me gustaría saber cuál es la mejor manera de includelos en su proyecto. Entiendo que puede copyr el código fuente en el proyecto, pero ¿para qué se utilizan cocoapods / sub-modules? Por ejemplo, ¿cuál es la forma correcta de actualizar su proyecto con los últimos cambios en ese repository incluido?

¿Hay alguna GUI para cualquiera de estos methods en lugar de terminal?

Cocoapods es una excelente forma de include otros proyectos en su proyecto Xcode. El proyecto Cocoapods mantiene una list de files de especificación de pod para varias bibliotecas de código abierto, que especifican dónde download el código y cómo integrarlo en un proyecto existente. Como anotó, tradicionalmente tenía que agregar un git submodule , agregar manualmente los files de origen a su proyecto, actualizar su configuration de compilation, y así sucesivamente. Cocoapods se encarga de todo esto por usted.

No estoy seguro de una manera de rastrear las actualizaciones para los proyectos de Github sin que también se les notifique sobre los problemas, pero Cocoapods sin duda puede decirle si alguno de sus 'vainas' se ha desactualizado. Es entonces un command para actualizarlos a las últimas versiones. Dicho esto, en general, es una buena práctica "bloquear" sus dependencies externas a una versión específica que sabe que funciona correctamente.

Usando cocoapods

Para comenzar, primero instale Cocoapods . Luego, simplemente necesita crear un file en su directory raíz del proyecto (el mismo directory que contiene su file .xcodeproj ) llamado Podfile . En el interior, puede especificar su SO objective y sus dependencies:

 platform :ios, '5.0' pod 'AFNetworking', '0.9.1' pod 'OHAttributedLabel', '0.1.1' 

El ejemplo anterior se enfoca en iOS 5.0 y en los proyectos AFNetworking y OHAttributedLabel .

Luego, en la Terminal, cambie al directory del proyecto:

 > cd path/to/my/project 

Y ejecute la pod install .

 > pod install 

Esto comprobará la última versión de sus dependencies para usted. También te generará un file .xcworkspace . De ahora en adelante, cuando trabaje en su proyecto, debe abrir el espacio .xcworkspace, no el file .xcodeproj .

Dentro de su nuevo espacio de trabajo, tendrá su proyecto existente de Xcode y un nuevo proyecto de Pods , que contiene todas sus bibliotecas de terceros. Simplemente edite y ejecute su aplicación de manera normal, y el proyecto Pods también se creará e includeá.

Algunos otros commands útiles de Cocoapods:

 > pod outdated 

Listará todas las dependencies que tienen una actualización disponible.

 > pod search query 

Buscará todas las especificaciones de pod conocidos para 'consulta'. ¡Útil para encontrar nuevas bibliotecas!

Tutoriales

  • Parece que Tutsplus tiene un buen tutorial sobre cómo empezar con Cocoapods
  • Hay un episodio gratuito de NSScreencast en Cocoapods

GUIs

Me temo que no conozco ninguna GUI para Cocoapods, pero realmente no hay muchos commands de Terminal que necesites saber. Vale la pena sentirse cómodo con la línea de command, ya que es una herramienta de desarrollo tan útil.

Dicho esto, por lo que sé, Appcode ( el IDE alternativo de Jetbrains para Objective-C) está planeando agregar compatibilidad con Cocoapods en su próxima actualización.

¡Buena suerte!

La respuesta de James Frost es una excelente explicación de cómo trabajar con Cocoapods y sus ventajas sobre los submodules.

Algunas ventajas importantes que tienen los submodules sobre Cocoapods son:

Los submodules son subrepositivos . Esto no solo significa que las interfaces gráficas git y git las reconocen implícitamente, y cada vez son más las que apoyan el trabajo fácil con ellas, también significa que sus dependencies permanecen conectadas al maravilloso mundo en el que se encuentran sus git repos, Cocoapods o no. . Esto significa que usted puede queueborar y probar los cambios desde su proyecto, generalmente su proyecto es la fuente de inspiración para la elaboración de una dependencia.

Desafortunadamente Cocoapods no mantiene este enlace, para trabajar en un medio de dependencia para clonarlo desde git, fuera del range de Cocoapods. Edit: Vale la pena señalar que Cocoapods sí permite trabajar en un pod local con la path o campos local o incluso build su propio repository Spec, pero aún así no es un process tan simple.

una dependencia de herramienta less , como se menciona en la viñeta anterior, los submodules son una function de git y su uso de git significa que están disponibles para usted. La adopción de git por cualquier software implica que eventualmente admitirán todas las características (importantes) de git o todas las características que cubran los casos de uso común. Xcode 5 ha traído un soporte básico para git y GUI (que son dependencies de herramientas, es cierto, pero con suerte solo dictan cómo la información es superficial, git dicta cómo funciona) como Git Tower hace que trabajar con subrepositorys sea sencillo.

Cocoapods ha recorrido un largo path y todos los días está dando pasos para convertirse en una herramienta estable e indispensable. Sin embargo, todavía no ha recibido una aprobación de Apple y no hay ninguna razón por la que Apple no lanzará un cambio a Xcode que rompa Cocoapods. Además Cocoapods depende de Ruby. Aparte, considerando cuánto se ha generado la atención y la comunidad alnetworkingedor de Cocoapods, sería una tontería que Apple lo ignorara.


También vale la pena señalar que el uso de uno no le impide usar el otro. Puede ser un dolor de cabeza o puede ser lo que necesita, tal vez utilizando Cocoapods para pequeñas bibliotecas de una class o bibliotecas con dependencies complejas y submodules para bibliotecas con las que interactuará con frecuencia.