¿Debo guardar los ficheros de Cocoapods en git?

Autor: | Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 2 minutos
Temas en este post:
En el soporte del Curso de Fundamentos de Programación iPhone & iPad (iOS) Online ha salido recientemente la siguiente pregunta: ¿cómo gestionar los ficheros de Cocoapods en un repositorio Git?

Ficheros de Cocoapods

Sorprendentemente, esto NO tiene una respuesta sencilla. Hay dos escuelas de pensamiento con respecto a qué incluir en un repositorio git (o de cualquier otro sistema de control de versiones):
  1. Todo aquello que sea necesario para compilar y desplegar el proyecto.
  2. Sólo aquello que no pueda ser fácilmente regenerado a partir de otros elementos que sí están incluidos.
La opción 1 es la más paranoica e implica en guardar incluso aquellos ficheros binarios de terceros, para los cuales no tienes el código fuente (librerías, etc). Como desventaja, tu repositorio terminará siendo mastodóntico. La opción 2 es la optimista: como los demás ficheros de cocoapods pueden volver a ser generados a partir del fichero Podfile, pues no los incluyes. De hecho, esto es lo que hace el ejemplo de Cocoapods. Un servidor, como siempre ha tenido un alma optimista, ha tirado siempre  por la opción 2…hasta que llegó el Apocalipsis Zombie. 🙁
Return Of The Living Dead_ficheros de Cocoapods
¿Lo creías olvidado? ¡Pues ha vuelto!
Return of the living dead
En una vida anterior, de oscuridad y llanto, vivia atado a la pata del compilador de C++ de Microsoft. Programando para Windows purgaba pecados y limpiaba mi Karma. Pues bien, un proyecto «legacy», que creía olvidado y enterrado, salió a la superficie cual Zombie hambriento de sesos, gritando ¡Compílame! ¡Ningún problema! Saco la última versión del repositorio, y ¡lo traigo de vuelta a la vida, cual moderna reencarnación del Dr Herbert West!
reanimator
Dr Herbert West: Reanimator
El problema, es que no tenía el binario de un componente vital para la interfaz de usuario, así que me bajé la última versión, que por supuesto tenía un montón de nuevas dependencias que desconocía y no estaban documentadas. Tiempo total hasta poder recompilar: 3 días infernales. 🙁

Regla para saber qué incluir en tu repositorio git

  1. Si trabajas para un cliente, guarda todo lo necesario para recompilar el proyecto, incluidos los ficheros binarios de terceros para los cuales no tienes la fuente. Yo incluiría todo lo que venga en Cocoapods.
  2. Si de verdad eres paranoico y crees que tendrás que dar soporte a un proyecto dentro de un montón de años (a veces pasa), no estaría de más guardar una máquina virtual con todo listo. Una buena opción puede ser vagrant.
  3. Si trabjas para tí, pues calvez lo mejor sea optar por la opción optimista: sólo los ficheros de código que no puedan ser fácilmente regenerados a partir de otros que ya están en el repositorio git. Esto implicaría, en el caso de Cocoapods, solo guardar el Podsfile (y encomendarse a Santa Tecla).

Mi fichero .gitignore

Como no aprendo, sigo optando por la opción 2, y para mi fichero .gitignore, uso el siguiente script, que se baja uno de github. Este .gitignore es creado por un grupo de desarrolladores iOS y puedo siempre obtener la última versión:
#!/bin/sh

# Sets a .gitignore for xcode
curl -s https://gist.github.com/adamgit/3786883/raw/2e79a2e99c7d8bdbb48aff537a3909ad2917fbf5/.gitignore > .gitignore

Posts Relacionados