2010-04-06 21 views
5

Tengo 2 proyectos, y en realidad estos 2 proyectos son aproximadamente 80% iguales entre sí, la principal diferencia es solo lenguaje y modelo comercial, uno es para una audiencia más grande que usa el idioma inglés y tiene un $ 9/modelo de negocio de mes, otro está utilizando el lenguaje local con el modelo de negocio freemium.Mantenimiento del proyecto con Git

En algún momento cuando quiero agregar nuevas características/funcionalidades, quiero agregarlas en ambos proyectos, pero también en algún momento quiero agregar funciones especialmente solo para el proyecto local.

Mi pregunta es, ¿cómo puedo mantener estos 2 proyectos con git?

  1. Mantener 2 repositorio git para cada proyecto o
  2. Mantener repositorio git individual con 2 ramifican principal o
  3. Cualquier otra sugerencia?

Respuesta

8

crear tres proyectos git:

  • un proyecto "núcleo": contiene el código compartida entre los otros dos proyectos

  • su proyecto Inglés: tiene una submódulo para el núcleo más específico código

  • el proyecto traducido: también tiene un submódulo para el núcleo más código específico

esta manera usted puede cambiar su proyecto central, actualizar las referencias submódulo y que sería buena

+0

Los submódulos son el camino a seguir para esto. Todos deben tener claro lo que está sucediendo, pero una vez que lo hacen, es lo menos posible. –

2

¿Es posible para que pueda manejar esto a través de la configuración y localización? Es decir:

  • una base de código
  • Dos archivos de localización que contienen en inglés y en el idioma local cuerdas
  • de configuración para cada versión de la página web para determinar el modelo de pago/características habilitadas y el cambio de comportamiento en consecuencia

Mi opinión personal es que un proyecto = un repositorio. Si sus sitios web son claramente muy diferentes, creo que su problema se puede manejar mejor refaccionando el código común en módulos que se pueden configurar y modificar de una manera sensata y controlada. Si permites que cada proyecto tenga su propio repositorio git, sin trabajo duro, podrían diferir fácilmente y contener diferencias que no pueden rastrearse fácilmente, introduciendo errores sutiles o funcionalidad no probada.

Cuestiones relacionadas