Pregunta

Al usar submódulos git, ¿cuál es la forma preferida de hacer personalizaciones? ¿Debería ...

  • bifurca el proyecto y sigue la bifurcación
  • intento de anular el comportamiento predeterminado
  • hacer los cambios localmente

Si nada de esto tiene sentido, ¿qué hace?

¿Fue útil?

Solución

No estoy muy seguro si su pregunta implica que todos los proyectos que desea incluir ya son proyectos git o si actualmente están controlados por svn, mercurial, sin versión. Si es lo último, tendría que ser una respuesta caso por caso.

Lo más probable es que los proyectos que desea incluir y personalizar ya estén en, por ejemplo, github y luego definitivamente debe bifurcar a través de github y usar esos tenedores como submódulos. Cualquier personalización debe registrarse y enviarse a github.

Podría ser más complicado si los proyectos que desea incluir están en otro lugar (o se basan en svn, mercurial, etc.). Una forma es bifurcar los proyectos localmente y luego configurar cron-jobs para enviar cualquier cambio entrante a github. Es decir, crear espejos github. Para tener el control total de la fusión y la actualización, es posible que tenga que bifurcar esos espejos e incluir esos tenedores como submódulos en su proyecto, verificando las personalizaciones locales y empujándolos al tenedor del espejo.

La alternativa # 3, proyectos de fork y hacer registros locales solamente, podría usarse en situaciones en las que no tiene las opciones anteriores y lo que está creando realmente no está destinado a distribuirse fácilmente.

Los parches de mono (alternativa # 2 en su lista) deberían ser una alternativa a las situaciones en las que no desea que un proyecto se vuelva dependiente de que mantenga una bifurcación personalizada actualizada con los cambios ascendentes.

Otros consejos

Encuentro que los subproyectos de bifurcación que usan git submodule son extremadamente cansados, por eso escribí git subtree en su lugar.

La idea de git subtree es que importe el contenido del subproyecto en su propio proyecto, por lo que ramifica todo de una vez y realiza nuevos commits como desee. Luego, cuando esté listo (si alguna vez), puede usar git subtree split para extraer el historial del subproyecto y enviarlo en sentido ascendente.

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