¿Cómo excluir las migraciones al sur de los repositorys públicos?

Estoy usando South para administrar las migraciones de esquema y datos en mis entornos de desarrollo y producción. Como tal, mantengo mis migraciones en mi repository de git, por lo que los cambios que realizo en el desarrollo se migran correctamente en producción.

Las aplicaciones y proyectos que estoy desarrollando son actualmente privados y solo los desarrollé yo. En algún momento, me gustaría publicar / distribuir mis aplicaciones. Estoy asumiendo que en ese punto, tendré un esquema "final" y por lo tanto no "necesitaré" el Sur. Dado que estas aplicaciones no se han distribuido antes (excepto en mis entornos), la versión pública no necesitará las migraciones que utilicé mientras desarrollaba las aplicaciones.

Tengo una pregunta de dos partes:

  1. ¿Es bueno (o aceptable) eliminar o al less "limpiar" las migraciones según mis suposiciones?

  2. ¿Cuál es la mejor manera de hacerlo? Me imagino que mantener una sucursal para la base pública / distribuida podría funcionar, pero soy bastante nuevo en git, así que no sé cuáles son mis opciones.

Gracias,

Este es un punto común de confusión para las personas que se ocupan del control de versiones y del Sur. Por supuesto, debe comprometer las migraciones con su proyecto, ya que otros necesitarán ejecutar las mismas migraciones. Sin embargo, debe limpiar sus migraciones antes de comprometerlas, lo cual es engañosamente fácil.

Si se trata de una aplicación completamente nueva o un nuevo proyecto en general:

  1. Revertir la aplicación a "cero":

    python manage.py migrate myapp zero 
  2. Elimine todas las migraciones de la aplicación (Todo en el directory "migraciones" excepto __init__.py ).

  3. Genera una nueva migration inicial:

     python manage.py schemamigration --initial myapp 

Si se trata de una aplicación existente, el process es básicamente el mismo, pero solo se revertirá justo antes de la primera nueva migration que hayas creado. Y, entonces, simplemente generará una nueva migration automática en lugar de una migration inicial. Por ejemplo, si la aplicación ya estaba en la migration 0005 y crea migraciones 0006, 0007 y 0008:

  1. Revertir a justo antes de la primera migration que creó (0006):

     python manage.py migrate myapp 0005 
  2. Eliminar todas las migraciones nuevas que haya creado (0006, 0007 y 0008)

  3. Generar una nueva migration automática:

     python manage.py schemamigration --auto myapp 

De cualquier manera, terminará con un solo file que encapsula todos sus cambios en lugar de múltiples files. Luego, compromete esto con su control de fuente.