Pregunta

Utilizamos Git para administrar nuestro proyecto.

Cada proyecto tiene un "núcleo" (como un marco de quién construiremos el proyecto) para que cada proyecto tenga al menos 2 ramas remotas:

  • 1 repositorio para ese marco central.
  • 1 repositorio por proyecto del cliente.

También tenemos módulos. Cada módulo tiene un núcleo que contiene la función básica, y personificamos cada módulo desde esa base para cada cliente.

  • Por lo tanto, tenemos submódulos incluidos en cada proyecto de cliente
  • Pero no puedo entender cómo manejar la parte personalización de los submódulos.

¿Cómo puede Git ayudarme si quiero agregar algunos archivos nuevos en un submódulo que solo debe usarse en 1 proyecto de cliente en particular?

Como los archivos de Thoses son personales para el proyecto principal, el mejor caso sería confirmar algunos archivos contenidos dentro del submódulo en la rama del proyecto del cliente, pero parece que no puedo, ya que cada submódulo es independiente.

PD: Usamos SmartGit.

¿Fue útil?

Solución

Este es un escenario en el que puedes usar git-subtree (fusionar)

Si realizó cambios en el otro proyecto en su repositorio, es posible que deseen fusionarse de su proyecto. Esto es posible usando subárbol: puede cambiar los caminos en su árbol y luego pueden fusionar solo las partes relevantes de su árbol.

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

La idea de la fusión de subárbol es que tiene dos proyectos, y uno de los proyectos se mapea en un subdirectorio de la otra y viceversa. Cuando especifica una fusión de subárbol, Git es lo suficientemente inteligente como para descubrir que uno es un subárbol del otro y se fusiona adecuadamente, es bastante sorprendente.

http://progit.org/book/ch6-7.html

Pero supongo que quieres usar submódulos y no alejarte de él.

Otros consejos

No puedo ya que cada submódulo es independiente.

Si bien es cierto que un submódulo es "independiente", ya que tiene su propio conjunto de confirmaciones y ramas como repositorio individual, aún puede definir una rama del proyecto cliente en dicho submódulo.

Esa rama se definiría en su repositorio principal del cliente cliente, así como en el submódulo central, para aislar los cambios específicos para un proyecto de cliente realizado en ambos repos.
Cuando retrocede esos cambios realizados en los submódulos centrales, los presiona en una rama del proyecto cliente cuyo nombre coincide con el nombre de la rama del cliente utilizada en el repositorio principal de su cliente.

En resumen, una convención de nombres podría ayudarlo a aislar pequeños cambios específicos realizados en un submódulo central utilizado y compartido por muchos reposadores de clientes clientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top