La mejor manera que he visto para superar los problemas de versiones entre las ramas para permitir outOfOrder y el uso de una marca de tiempo como el número de versión
Por defecto, la mayoría de los marcos de migración eligen anteponer las migraciones individuales con un entero, como se en el ejemplo de abajo Cuando el marco encuentra migraciones que aún no se han aplicado a la base de datos actual, comienza con la primera migración cuyo prefijo no está presente en la base de datos y comienza a aplicarlas en orden ascendente.
- 1.0.0.1__add_customers_table.sql
- 1.0.0.2__add_email_address_column_to_customers_table.sql
- 1.0.0.3__add_orders_table_with_reference_to_customer_table.sql
Esto funciona muy bien cuando todos estén en la misma rama de código. Sin embargo, una vez que los miembros del equipo comienzan a trabajar en sus propias sucursales, la probabilidad de una colisión de prefijos aumenta drásticamente.
Pero, si opta por anteponer sus migraciones utilizando marcas de tiempo en lugar de enteros, la probabilidad de una colisión prácticamente desaparece, incluso entre sucursales.Por ejemplo, usando un patrón como ddMMaaaahhmmssSSS las migraciones por encima de parecerse ...
- 1.0.0.20130704144750766__add_customers_table.sql
- 1.0.0.20130706132142244__add_email_address_column_to_customers_table.sql
- 1.0.0.20130706151409978__add_orders_table_with_reference_to_customer_table.sql
El patrón de marca de tiempo anterior es preciso hasta el milisegundo. Si bien una marca de tiempo altamente precisa puede conducir a prefijos difíciles de leer, cuanto más preciso sea su prefijo, menor será la probabilidad de que se produzca una colisión.
Para obtener los mejores resultados, usted querrá para automatizar la creación de esta marca de tiempo por lo que todos los miembros de su equipo están utilizando un formato coherente
Además, cabe destacar que la vía migratoria también trata prefijos de fecha y hora como enteros. Esto significa que si originalmente comenzó a trabajar con Flyway usando enteros, puede cambiar a las marcas de tiempo en cualquier punto. Como las marcas de tiempo son solo números enteros muy grandes, la primera migración con prefijo de fecha y hora simplemente se aplicará después de la última migración con prefijo entero.
Tomado de aquí y ligeramente modificado: http://www.jeremyjarrell.com/using-flyway-db-with-distributed-version-control/
Puede usar marcas de fecha y hora para sus "números de versión". Para hacer esto simple, probablemente tendrías que tener algún tipo de soporte de script. –
Claramente, puede tener conflictos al intentar aplicar todas las migraciones a la vez. También puede tener conflictos en el código fuente. Entonces, cuando comiences a prepararte para el lanzamiento, cambia el nombre de tus migraciones como parte de deducir todo esto. Ver: http://stackoverflow.com/questions/888414/git-checkout-older-revision-of-a-file-under-a-new-name –