Core Data y control de versiones: ¿Wat es la mejor estrategia para comprometer versiones de la tienda persistente (de desarrollo)?

Estoy trabajando en una aplicación Core Data, bajo el control de la versión Git (en realidad, cambié de Subversion a Git hace unas semanas). Hace dos días noté que un elemento de la interfaz ya no respondía correctamente, así que retrocedí a una revisión hace cuatro o cinco días. El problema era que no podía ejecutar la aplicación para verificar el comportamiento de la IU problemática, porque la tienda persistente (una database sqlite) ya no era compatible con el model de datos.

Los cambios en el model de datos eran lo suficientemente pequeños como para que estuvieran siendo atendidos por la migration liviana de Core Data, pero lo suficientemente grandes como para bloquearme. Por supuesto, podría arreglar esto, pero me tomaría una hora más o less cuando todo lo que quería era comprobar rápidamente cómo un elemento menor respondía a un evento en particular.

Eso me hizo pensar: ¿cómo podría agregar la tienda persistente a mi flujo de trabajo de control de versiones? Estoy hablando aquí de una database utilizada en el desarrollo, ni siquiera de medio megabyte de tamaño. NSPersistentContainer los crea de forma pnetworkingeterminada en ~ / Library / MyProjectName / MyDataModelName.sqlite, que está fuera del tree de código fuente. No tendría ningún problema con copyr manualmente la database versionada a la location pnetworkingeterminada en caso de una reversión.

En este momento, agregué una fase de compilation 'Ejecutar script' con el siguiente script:

cp ~/Library/Application\ Support/$PROJECT_NAME/*.sqlite DB_Archive 

DB_Archive es una carpeta que he creado dentro de la carpeta del proyecto Xcode. Como el proyecto está bajo el control de Git, DB_Archive apareció inmediatamente cuando hice un commit. En Subversion, uno tendría que importar la carpeta (o crearla en el server) y luego actualizarla.

La ventaja de la Fase de compilation 'Ejecutar script' me permite usar la variable de entorno PROJECT_NAME. También intenté ejecutar el script como acción posterior en un esquema, pero no se reconoció PROJECT_NAME. Tendré que acordarme de agregar el guión a cada nuevo proyecto, por supuesto, a less que desee invertir time en modificar algunas templates de Xcode.