es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fusionar un conjunto de cambios seleccionado en TFS/TFVC versus cherry-pick de git entre ramas.

Vamos a migrar nuestro repositorio de TFS/TFVC a Git.
En TFVC solíamos tener un desarrollo basado en tronco con ramas de mantenimiento de lanzamiento de larga duración.
Las correcciones de errores en las ramas de lanzamiento deben fusionarse de vuelta al tronco.
A veces, características más pequeñas deben ser llevadas desde el tronco a una rama de lanzamiento.
En TFVC hacíamos esto “fusionando” cambiosets individuales (o pequeños grupos de ellos) de una rama a la otra.
Los cambiosets resultantes se marcaban como “fusión”, aunque no sé exactamente qué implica eso para TFVC, especialmente considerando las operaciones de fusión futuras.

Entonces imagino que el gráfico de la rama se vería algo así:
(Aunque hay que tener en cuenta que TFVC nunca muestra gráficos)

-A–B–C—D–E–F—
\ / \
G–H–I–J—K–L-

(Aquí la rama de lanzamiento se ha creado desde A, I->D es una fusión de corrección de errores, E->K es una función-redirección)
Pero tal vez estoy equivocado. En este caso, ¿podría alguien explicar qué es realmente un cambioset de fusión de TFVC?

Me han dicho que una forma equivalente de hacer en Git es seleccionar los commits individuales.
Sin embargo, en los gráficos resultantes de las ramas, no veo ningún enlace entre las ramas después de un commit de selección.
Soy consciente de que la selección no es técnicamente una operación de fusión y, por lo tanto, la relación histórica entre las ramas no se lleva a cabo.
¿Hay algo que me falte? ¿Hay una mejor manera de llevar estos pequeños commits de una rama a otra, pero aún así retener cierta información de fusión?
NO quiero fusionar la rama completa. Por ejemplo, los cambiosets B, C o H deben permanecer aislados de cada rama.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En TFVC, al fusionar cambios individuales de una rama a otra se crea un nuevo conjunto de cambios que combina los cambios de ambas ramas. Este nuevo conjunto de cambios se marca como “merge” para indicar que es el resultado de una operación de fusión.

    Al migrar de TFVC a Git, la forma equivalente de transferir los cambios individuales es a través de cherry-picking. Sin embargo, cherry-picking no crea un nuevo conjunto de cambios de fusión como en TFVC, y no mantiene la relación de historial de ramas entre las ramas.

    Para retener alguna información de fusión al realizar cherry-picking en Git, se puede utilizar la opción “–no-commit”, que aplica los cambios pero no crea automáticamente un nuevo commit. Esto permite revisar los cambios y crear manualmente un nuevo commit de fusión que incluya la información de fusión adecuada.

    Es importante tener en cuenta que el modelo de ramificación de Git es diferente al de TFVC, y puede requerir algunos ajustes en su proceso de desarrollo. Por ejemplo, en lugar de ramas de lanzamiento duraderas, Git utiliza típicamente ramas de características de corta duración que se fusionan de vuelta en la rama principal con frecuencia. Esto puede ayudar a simplificar los procesos de fusión y cherry-picking.

Comments are closed.