Trabajando con submodules / cocoapods de git

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 al día con un repository en Git sin recibir correos electrónicos de todos los problemas informados, etc.?

Después de que esto se complete, me gustaría saber la mejor manera de includelos en su proyecto. Entiendo que puede copyr el código fuente en el proyecto, pero ¿para qué se usan los cocoapods / submodules? 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 manera de include otros proyectos en su proyecto Xcode. El proyecto Cocoapods mantiene una list de files de especificaciones de pod para muchas bibliotecas de código abierto, que especifican dónde download el código y cómo integrarlo en un proyecto existente. Como ha señalado, tradicionalmente tendría que agregar un git submodule , agregar manualmente los files de origen a su proyecto, actualizar su configuration de compilation, etc. Cocoapods se encarga de todo esto por ti.

No estoy seguro de la forma de rastrear las actualizaciones de los proyectos de Github sin que se notifiquen los problemas, pero Cocoapods puede indicarle si alguno de sus "grupos" se ha quedado obsoleto. Es entonces un command actualizarlos a las últimas versiones. Dicho esto, generalmente es una buena práctica "bloquear" tus dependencies externas a una versión específica que sabes que funciona correctamente.

Usando Cocoapods

Para comenzar, primero instala Cocoapods . Simplemente necesita crear un file en su directory de proyecto raíz (el mismo directory que contiene su file .xcodeproj ) llamado Podfile . En el interior, puede especificar su sistema operativo objective y sus dependencies:

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

El ejemplo anterior está orientado a iOS 5.0 y tirando de los proyectos AFNetworking y OHAttributedLabel .

Luego, en la Terminal, cambie a su directory de proyecto:

 > cd path/to/my/project 

Y ejecutar la pod install .

 > pod install 

Esto verificará la última versión de sus dependencies por usted. También le generará un file .xcworkspace . A partir de ahora, cuando trabaje en su proyecto, debe abrir el .xcworkspace, no el file .xcodeproj .

Dentro de su nuevo espacio de trabajo, tendrá su proyecto Xcode existente y un nuevo proyecto Pods , que contiene todas las bibliotecas de terceros. Simplemente crea y ejecuta tu aplicación como siempre, y el proyecto Pods también se comstackrá e includeá.

Algunos otros commands Cocoapods útiles:

 > pod outdated 

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

 > pod search query 

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

Tutoriales

  • Parece que Tutsplus tiene un buen tutorial sobre cómo comenzar 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 command-line, ya que es una herramienta de desarrollo tan útil.

Dicho esto, hasta donde yo sé, Appcode (IDE alternativo de Jetbrains para Objective-C) está planeando agregar soporte 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 los submodules tienen sobre los Cocoapods son:

los submodules son sub-repositorys , esto no solo significa que las GUI de git y git los reconocen implícitamente y cada vez soportan trabajar con ellos más fácilmente, también significa que sus dependencies permanecen conectadas al maravilloso mundo en el que residen sus repositorys git-git, Cocoapods o no. Esto significa que puede queueborar y probar los cambios desde su proyecto, siendo su proyecto la fuente de inspiración para la elaboración de una dependencia.

Desafortunadamente los Cocoapods no mantienen este enlace, trabajar en una dependencia significa clonarlo desde git, fuera del range de Cocoapods. Editar: Vale la pena señalar que Cocoapods permite trabajar en un pod local con la path o local campos local o incluso crear su propio repository de especificación, pero todavía no es un process tan simple.

una less dependencia de la herramienta : como se mencionó 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 cualquier software de git implica que eventualmente admitirán todas las características (importantes) de git o todas las características que cubren casos de uso común. Xcode 5 ha aportado 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 está en la superficie, git dicta cómo funciona) como Git Tower hace que trabajar con sub-repos sea sencillo.

Cocoapods ha recorrido un largo path y todos los días está tomando medidas para convertirse en una herramienta estable e indispensable. Sin embargo, Apple aún no ha recibido un asentimiento y no hay ninguna razón por la cual Apple no lanzará un cambio a Xcode que rompa Cocoapods. Además, Cocoapods depende de Ruby. Además, considerando cuánta atención y comunidad se han generado en torno a Cocoapods, sería una tontería que Apple lo ignore.


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 podría ser lo que necesita, tal vez usando Cocoapods para pequeñas bibliotecas de una class o bibliotecas con complejas dependencies y submodules para bibliotecas con las que interactuará con frecuencia.