Estrategias de combinación y combinación de squash
Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2017
Cuando se completa una solicitud de extracción,se combina la rama de tema en la rama predeterminada, normalmente . Esta combinación agrega las confirmaciones de la rama de tema a la rama principal y crea una confirmación de combinación para conciliar los conflictos entre la rama predeterminada y la rama de tema. Los comentarios y la explicación de la solicitud de extracción dan contexto adicional para los cambios realizados en la rama de tema.

El historial de confirmaciones de la rama (u otra rama predeterminada) no sigue una línea recta debido al historial de ramas de temas relacionados. A medida que un proyecto crece, aumenta el número de ramas de temas en las que se ha trabajado al mismo tiempo, lo que hace que el historial de ramas predeterminado sea cada vez más difícil de seguir.
La rama predeterminada es una representación precisa del historial de cada rama de tema, pero es difícil de usar para responder a preguntas más amplias sobre el desarrollo del proyecto.
Combinación de squash
La combinación de squash es una opción de combinación que permite condensar el historial de Git de ramas de tema al completar una solicitud de extracción. En lugar de cada confirmación en la rama de tema que se agrega al historial de la rama predeterminada, una combinación de squash agrega todos los cambios de archivo a una única confirmación nueva en la rama predeterminada.

Una manera sencilla de pensar en esto es que la combinación de squash proporciona solo los cambios de archivo y una combinación normal le proporciona los cambios de archivo y el historial de confirmaciones.
¿Cómo resulta útil una combinación de squash?
La combinación de squash mantiene los historiales de ramas predeterminados limpios y fáciles de seguir sin exigir ningún cambio de flujo de trabajo en el equipo. Los colaboradores de la rama de tema trabajan como quieren en la rama de tema y las ramas predeterminadas mantienen un historial lineal mediante el uso de mezclas de squash. El historial de confirmaciones de una rama actualizada con combinación main de squash tiene una confirmación para cada rama combinada. Puede seguir este historial para averiguar exactamente cuándo se hizo el trabajo.
Consideraciones al combinar squash
La combinación de squash condensa el historial de cambios en la rama predeterminada, por lo que es importante trabajar con el equipo para decidir cuándo debe combinar o cuándo desea mantener el historial completo de confirmaciones de una rama de tema. Al combinar la squash, es un procedimiento recomendado eliminar la rama de origen. La eliminación de la rama de origen evita confusiones, ya que la propia rama del tema no tiene una confirmación que la combina con la rama predeterminada.
Completar solicitudes de extracción con combinación de squash
Puede elegir la combinación de squash al completar una solicitud de extracción en Azure Repos.
Elija Confirmación de squash en Tipo de combinación en el cuadro de diálogo Completar solicitud de extracción para combinar la rama del tema.

Completar solicitudes de extracción con combinación de squash
Puede elegir la combinación de squash al completar una solicitud de extracción en Azure Repos.
Elija Cambios de squash al combinar en el cuadro de diálogo Completar solicitud de extracción para combinar la rama del tema.

Varias bases de combinación
La pestaña Archivos de una solicitud de extracción detecta las diferencias mediante una comparación de tres lados. El algoritmo tiene en cuenta la última confirmación en la rama de destino, la última confirmación en la rama de origen y su base de combinación común. El algoritmo es un método rápido, rentable y confiable para detectar cambios. Desafortunadamente, en algunos casos, hay más de una base verdadera. En la mayoría de los repositorios, esta situación es poco frecuente, pero en repositorios grandes con muchos usuarios activos, puede ser habitual.
Los siguientes escenarios pueden provocar varias bases:
- Mezclas cruzadas entre distintas ramas
- Reutilización activa de ramas de características
- El control de las consecuencias de la rama principal se revierte
- Otras manipulaciones no intuitivas y enrevesadas con reversión, selección de guisos y mezclas
La detección de varias bases de mezcla forma parte del reconocimiento de la seguridad. Si hay varias bases de combinación, es posible que el algoritmo de diferencias de archivo de la interfaz de usuario no detecte correctamente los cambios de archivo, en función de la base de combinación que elija. Si los archivos de la solicitud de extracción tienen versiones diferentes entre las bases de combinación, se produce una advertencia de base de combinación múltiple.
Posibles riesgos de seguridad de la combinación desde varias bases
- Un usuario malintencionado podría usar el algoritmo de interfaz de usuario para confirmar cambios malintencionados que no están presentes en la pr.
- Si los cambios propuestos en la pr ya están en la rama de destino, se muestran en la pestaña Archivos, pero es posible que no desencadene directivas de rama que estén asignadas a los cambios de carpeta.
- Es posible que dos conjuntos de cambios en los mismos archivos de varias bases de mezcla no están presentes en la pr. Ese caso podría crear lagunas lógicas tediosas.
Cómo resolver el problema de varias bases de mezcla
Tener varias bases de mezcla no es necesariamente malo, pero debe comprobar que todo está bien. Para deshacerse de varias bases de combinación, empate las ramas a un único antecesor común. Puede volver a base la rama en el destino o combinar el destino en principal. Esas acciones se deshace del mensaje de advertencia y le ayudan a comprobar si los cambios reales son buenos.
Un enfoque es restablecer y escalonar el progreso antes de cambiar el número de cambios o la combinación. A continuación, puede crear una nueva rama o volver a crear una vacía y aplicar los cambios desde un punto claro. Este proceso puede requerir una inserción de fuerza en remoto si los cambios ya están allí.
Cómo evitar el problema de varias bases de mezcla
Estas son sugerencias generales para evitar el problema de base de combinación múltiple:
- Al preparar una solicitud de extracción, cree ramas de características a partir de las versiones más recientes de la rama principal o de versión.
- Evite crear ramas que no se originan directamente desde ramas estables del repositorio, a menos que sea necesario.
Qué hacer si vuelve a aparecer el problema de varias bases de mezcla
En repositorios grandes con muchos colaboradores activos, este problema puede ser especialmente inconveniente. Aunque se deshaga de varias bases a través de la combinación, la situación podría volver a aparecer. Si alguien cierra una solicitud de extracción de larga duración, puede volver a crear la situación. Aunque las pruebas y las directivas de compilación se están ejecutando, no tiene ningún medio para completar la solicitud de extracción. Restablecer e iniciar una nueva rama puede ser de ayuda. Si no se cambia nada, los cambios probablemente estén claros, incluso si la situación se repite.