¿Va a "actualizar la vaina" sobreescribir mis cambios en el código cuando hay disponible una nueva versión del pod?

Agregué la versión 4.99 de MKStoreKit a mi proyecto usando cocoapods. Mi Podfile consiste en:

platform :ios, '6.0' pod 'MKStoreKit', '~> 4.99' 

MKStoreKit tiene un file de configuration llamado MKStoreKitConfigs.h que debe modificarse por proyecto, y he modificado el file correctamente. ¿Qué sucederá cuando MKStoreKit lance una nueva versión, digamos 5.0, y ejecuto la pod update ? ¿Se sobreescribirán mis cambios? ¿Podrías describir por qué sí o por qué no?

Sí, la actualización de pod sobrescribirá sus cambios. Lo que podrías hacer es bifurcar el proyecto en Github, hacer los cambios en tu tenedor y apuntar Cocoapods a la bifurcación. ¿Ves usar un tenedor de Restkit en github a través de cocoaPod? sobre cómo hacerlo.

Como entiendo, es un problema conocido y también como se dijo: "esta es una mala práctica para configurar 3rd party lib in header file".

Así que al principio puedes echar un vistazo a este compromiso . IMO esta es una mejor manera de configurarlo.

También puede agregar su tenedor como un Pod usando:

 pod 'MKStoreKit.MyFork', :path => 'MKStoreKit.MyFork.podspec' 

EDIT: Gracias a rounak por notar ,: :local es ahora :path . De cocoapods docs:

Usando esta opción ( :path ) CocoaPods asumirá que la carpeta dada es la raíz del Pod y vinculará los files directamente desde allí en el proyecto Pods. Esto significa que sus ediciones persistirán entre las instalaciones de CocoaPods. La carpeta a la que se hace reference puede ser una comprobación de su SCM favorito o incluso un submodule git del repository actual.

Esta es una publicación anterior, pero tengo una solución bastante simple para mantener los cambios que realice en Pods.

Como se mencionó, la pod update sobrescribirá cualquier cambio que haya realizado. Sin embargo, si está usando git lo que me gusta hacer es enviar todos mis cambios excepto los cambios de mi pod.

Una vez que los únicos cambios que tengo en mi twig son los cambios de git stash save "Custom Cocoapod changes, apply after every pod update" pod mediante la ejecución de git stash save "Custom Cocoapod changes, apply after every pod update" . Puede darle cualquier post que desee cambiando el text entre "".

Este command tiene el efecto secundario de restablecer tu directory de trabajo a HEAD anterior, así que si quieres volver a aplicar esos stashes, solo puedes ejecutar git stash apply para volver a ingresar esos cambios, y luego puedes confirmarlos para savelos.

No uses git stash pop ya que esto eliminará el escondite después de aplicarlo.

Ahora, en un momento indeterminado en el futuro, cuando actualices tus pods y es hora de volver a aplicar el escondite, lo que vas a querer hacer es ejecutar git stash list . esto devolverá una list de todos los stashes que has hecho, y el más reciente se indexó a cero. Probablemente verá algo como esto:

 stash@{0}: On featureFooBar: foo bar stash@{1}: On Master: Custom Cocoapod changes, apply after every pod update ... 

Si los pods de cocoa personalizados cambian el stash está en el stash @ {0}, entonces perfecto, puedes ejecutar un git stash apply y volver a get esos cambios en tu directory de trabajo. De lo contrario, una vez que encuentre qué número de stash sus pods cambia, puede aplicar ese stash ejecutando git stash apply stash@{1}

La aplicación de stashes es más fácil cuando tiene un directory de trabajo limpio en la misma twig, pero eso no es obligatorio. Esta página ofrece una buena descripción de git stash y cómo usarlo de lo contrario.