Flujo de trabajo del model de ramificación de Git: desarrollar / dominar twigs

El model de ramificación git tiene un flujo de trabajo en el que tenemos dos twigs con una vida infinita: develop y master donde el master refleje un estado listo para producción y develop un estado con los últimos cambios de desarrollo entregados .

Para pasar del develop al master pasamos por un estado intermedio, una release branch que admite la preparación de una nueva versión de producción . Después de estos preparativos (un script de shell o quizás cambios manuales) fusionamos la twig de lanzamiento en master, la labelmos y la llevamos a producción.

En este punto , solo se realizan cambios en la producción , ya que, por ejemplo, los services externos tienen diferentes URL en producción que en un entorno de transición.

Ahora el master está por delante del develop y siempre lo estará a less que lo vuelva a fusionar para develop .

Si yo (a) hago toda esa producción, solo los cambios realizados en la twig de publicación se fusionarán para desarrollar

Si yo (b) no hago eso, mi maestro siempre estará adelante y detrás del develop y en el caso de una revisión que se bifurca del maestro, terminaré uniéndome todo de nuevo después de la corrección.

¿Cuál es la mejor manera de trabajar con este model al mismo time que me aseguro de mantener la producción solo en los cambios alejados de mi twig de desarrollo?

Esto es realmente más una cuestión de gestión de configuration que una pregunta de git. Este problema no es exclusivo de git y es un problema con todos los sistemas de control de versiones. La mejor práctica es eliminar todos los cambios de producción solo o al less networkingucirlos al mínimo.

Esto se puede hacer de varias maneras:

  • Pon los valores de configuration en la database. Esto funciona hasta que te molesta tener que hacer cambios de DB para cambiar una configuration simple
  • Coloque la configuration en un file y use if statements en function de una sola variable que cambie en producción. Por ejemplo:

    if (producción) value = key
    else value = otherkey

    esto tampoco es bueno porque ahora esencialmente tienes un código no probado.

  • Pon configuration en variables de entorno. Esto funciona bastante bien, pero es mejor que te asegures de que tu process de implementación crea instancias y los rellena.

  • Pero si desea get lo último en tecnología, coloque su configuration en su propio repository y use herramientas de automation como títere y cocinero.