2011-04-18 9 views
10

Tengo un proyecto Zend Framework/Doctrine 1.2 controlado por git. ¿Cómo se hace un seguimiento de las clases de migración cuando se cambia de una rama a otra en git?¿Cómo manejas las Migraciones de Doctrine cuando usas Git?

Por ejemplo

En rama A Tengo un archivo de clase de la migración (038_version.php)

En la rama B Tengo un archivo de clase de la migración (039_version.php)

Doctrine aplicará las migraciones secuencialmente según el nombre del archivo, por lo que debo expulsar las funciones en la rama A antes de la rama B para que funcione la migración de Doctrine.

¿Debo mantener todas las migraciones en su propia sucursal y cambiar los números antes de la puesta en marcha?

Respuesta

1

Dado que una rama está allí para isolate a development effort, si le pide una tarea que depende de varias ramas, dichas ramas están en el camino.
Puede ser mejor fusionar todas esas ramas en una rama de implementación, para visualizar los archivos relevantes para que Doctrine trabaje.

NDM amablemente señala que "Database migrations in a complex branching system" para ilustrar mejor la pregunta del OP:

usted podría hacer que funcione para los patrones de ramificación simples, pero para nada complicada, será una pesadilla.

El sistema que estoy trabajando ahora toma un enfoque diferente: no tenemos capacidad de hacer migraciones incrementales, pero sólo para reconstruir la base de datos desde una línea de base

NDM añade:

Simplemente no es posible realizar migraciones secuenciales correctamente en un sistema ramificado

+0

Esto no responde la pregunta. Simplemente no es posible realizar migraciones secuenciales correctamente en un sistema ramificado ... también vea http://stackoverflow.com/questions/6409204/database-migrations-in-a-complex-branching-system – NDM

+0

mientras OP actualiza su respuesta, También me gustaría señalar que la respuesta aceptada de esa publicación no es la mejor, su sistema solo mueve el problema a otra parte. la verdadera conclusión es: no es posible. – NDM

0

Si tiene este escenario, nunca tendrá ramas sincronizadas. Además, si usted tiene DB limpia como ir en vivo que no es necesario las migraciones, simplemente eliminarlos en el sitio activo, y ejecutar

migrations:diff 

y que le cree una nueva migración de la base de datos y que están en el juego .

Cuestiones relacionadas