Cómo mantener la database del proyecto Django y sus contenidos sincronizados usando GIT

He configurado un repository git y clonado el código fuente abierto que estoy planeando modificar desde github para comenzar el desarrollo. Cometí la base de código en nuestro repository. Ahora agregué pocos usuarios y publicaciones y otras "cosas" en la database.

También quiero comprometer este cambio para que mi compañero de equipo pueda verificar y tengamos la misma configuration y database en todo momento.

  1. ¿Es esto posible usando migraciones al sur? es decir, ¿el contenido del bot de la database y el esquema estarán sincronizados también?
  2. Tengo el proyecto donde estoy escribiendo el código y la aplicación real. Debería comprometerlos a ambos.
  3. ¿Cómo debería ser el repository de Github después de hacer lo correcto?

Datos y estructura de la database

  • Esto es posible usando migraciones al sur, migraciones de datos y accesorios.
  • La forma más fácil para el desarrollo es simplemente usar una database SQLite , que es un file binary que puede confirmar. El test_project de django-autocomplete-light demuestra tal posibilidad: http://django-autocomplete-light.readthedocs.org/en/latest/demo.html
  • debes usar el sur de todos modos!

Aplicaciones en el repository del proyecto

Creo que deberías mantener las aplicaciones lo más pequeñas y lo más unidas posible.

Si suena, crea otro package de repository y python para la aplicación:

  • En algunos casos, tiene sentido al principio, es decir. una aplicación de "blog" que sabes que volverás a usar,
  • En algunos casos, tiene sentido más adelante, es decir. creías que tu aplicación era realmente específica de un proyecto, pero luego quieres reutilizarla en otro proyecto,
  • En algunos casos, nunca tiene sentido (es decir, la aplicación solo es útil para ese proyecto en particular).

Mejores prácticas

En cuanto a las mejores prácticas, hay http://12factor.net , http://lincolnloop.com/django-best-practices/ y proyectos de pinax que son realmente interesantes.

Si vas a reutilizar y extender aplicaciones externas, tal vez este artículo sobre prácticas recomendadas de reutilización de aplicaciones te pueda ayudar.

  1. Si hay datos que todo desarrollador necesita, estos pueden ser proporcionados por initial_fixtures . Acabo de comenzar a usar el sur, pero creo que es principalmente para migraciones, (cambiando sus models, sin tener que borrar sus datos, y resincronizar) no para compartir datos. El esquema siempre debe estar sincronizado con el sur, porque un desarrollador puede extraer la migration del sur y aplicarla.