Pregunta

Me acabo de alrededor de crear ramas puntuales para las características inacabadas de mi proyecto, gestionado por Git. Todos ellos son muy auto-contenida de tal manera, que la rama de un tema no se refiere directamente a otra rama tema. Todas las ramas, sin embargo, tienen un punto en común, la rama principal, que es el núcleo del sistema, las ramas puntuales acaba de extender las características de la rama principal.

Si he entendido bien, si hago algo en la rama principal que afecta a (m) cualquier ramas puntuales (por ejemplo, cambiar la API utilizada para la comunicación entre el núcleo y las características individuales) que el cambio no se propaga a las ramas puntuales de forma automática, de manera que las ramas podrían fijarse en consecuencia. tendrían que ser fusionado manualmente o cereza escogidos en las otras ramas de los cambios.

Yo entiendo que el uso de submódulos lo podrá conseguir. Los submódulos conducen, sin embargo, que demasiada separación entre el proyecto principal y los proyectos de largometrajes aspirantes a, principalmente debido a las características no son auto-sostenible. Se basan en el núcleo.

Por lo tanto, lo que estoy buscando es algún tipo de método para decir que ciertos archivos / directorios son exclusivos de una determinada rama, todo lo demás viene de una rama principal. A falta de una mejor analogía, hablando en términos de Photoshop, quiero principal a ser la capa de fondo, y cada rama tema habría una capa de imagen parcialmente transparente en la parte superior de la misma, con unos contenidos únicos.

¿Fue útil?

Solución

Esta noción de "composición" o "herencia de configuración" no se admite en Git, como se explica en la pregunta " flexible vs estática ramificación ". Sólo fusiones permiten a "componer" el conjunto exacto de los archivos que desea.

La característica submódulo ayuda a identificar un conjunto coherente de archivos que debe tener su propio ciclo de vida y ser etiquetados a su propio ritmo. Ese no es el caso de sus características.

Su enfoque debe seguir siendo un " basado en el sistema" uno, donde a desarrollar, etiquetar y fusionar los todos los sistemas. Si hay algo que evoluciona en la rama principal, hay que fusionar en las ramas de características.
Si las características implican un conjunto diferente de archivos que los modificados en la rama principal, que la fusión será trivial. Si no es así, puede seguir de Mateusza sugerencia , usando un intermedio rama para resolver los conflictos y evaluar el resultado de una combinación de este tipo, mientras se mantiene la rama de la funcionalidad intacta.

Otros consejos

Digamos que tiene maestro rama y manojo de ramas: característica1, característica2, feature3 ...

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master

Cada vez que se realiza ningún cambio en principal o feature1 puede obtenerlos a amo-con-feature1 y les reunían.

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