Comando merge (Control de versiones de Team Foundation)

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

El comando tf merge aplica los cambios de una rama a otra en Control de versiones de Team Foundation (TFVC).

Nota:

Los resultados de este comando no se reflejan en el servidor de Azure DevOps hasta que realice una operación de inserción en el repositorio. Para más información, vea Desarrollo de código y administración de cambios pendientes.

Requisitos previos

Para usar el comando merge, debe tener el permiso Extraer del repositorio establecido en Permitir para la carpeta del área de trabajo que contiene destination y debe tener el permiso Lectura establecido en Permitir para la carpeta del área de trabajo que contiene source. Para más información, vea Permisos predeterminados de TFVC.

Sintaxis

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

Parámetros

Argumentos

Argument

Descripción

<versionspec>

Proporciona un valor como C2 para la opción /version. Para más información sobre cómo TFVC analiza una especificación de versión para determinar qué elementos están dentro de su ámbito, vea Uso de comandos de control de versiones de Team Foundation.

<source>

Especifica el archivo o la carpeta que va a actuar como origen de la combinación.

<destination>

Especifica el archivo o la carpeta que va a actuar como destino de la combinación.

<username>

Proporciona un valor a la opción /login. Puede especificar un valor username como DOMAIN\username o username.

Opciones

Opción

Descripción

/recursive

Coincide con la especificación del elemento source en el directorio actual y todas las subcarpetas.

/force

Omite el historial de combinación y combina los cambios especificados del origen en el destino, incluso si algunos de estos cambios o todos se han combinado antes.

/candidate

Imprime una lista de todos los conjuntos de cambios del origen que todavía no se han combinado en el destino. La lista debe incluir el id. de conjunto de cambios que no se ha combinado y otra información básica sobre ese conjunto de cambios. Un asterisco para un resultado determinado indica que se ha combinado parcialmente, lo que significa que algunos de los cambios del conjunto de cambios se han combinado y otros no.

/discard

No realiza la operación de combinación, pero actualiza el historial de combinación para realizar el seguimiento de que se ha producido la combinación. Esto descarta que se use un conjunto de cambios para una combinación determinada.

/version

Para una combinación selectiva, esta opción especifica el intervalo que se debe combinar en el destino. Para una combinación de puesta al día, este parámetro especifica la versión antes de la cual se deben combinar todos los cambios no combinados.

Para una combinación selectiva, el intervalo de versiones indica los puntos inicial y final del conjunto de cambios que se van a combinar. Por ejemplo, si intenta combinar la versión 4~6, se combinan los conjuntos de cambios 4, 5 y 6.

/lock

Especifica un tipo de bloqueo o quita un bloqueo de un elemento. Para más información, vea Descripción de los tipos de bloqueo.

Opciones de bloqueo:

  • None: no coloca un bloqueo en un elemento y quita cualquier bloqueo existente del elemento.

  • Checkin: otros usuarios pueden extraer del repositorio los elementos especificados, pero no pueden insertar en el repositorio las revisiones de archivos bloqueados hasta que libere el bloqueo mediante una inserción en el repositorio. Si cualquier otro usuario ha bloqueado alguno de los elementos especificados, se produce un error en la operación de bloqueo.

  • Checkout: impide que los usuarios inserten o extraigan del repositorio cualquiera de los elementos especificados hasta que se libere explícitamente el bloqueo. Si otros usuarios han bloqueado alguno de los elementos especificados, o bien si hay cambios pendientes en cualquier elemento, se produce un error en la operación de bloqueo.

/preview

Muestra una vista previa de la combinación.

/baseless

Realiza una combinación sin una versión base. Es decir, permite al usuario combinar archivos y carpetas que no tienen una relación de combinación. Después de una combinación sin base, existe una relación de combinación y las combinaciones futuras no tienen que ser sin base.

Nota:

Las combinaciones sin base no pueden eliminar archivos en el destino. Puede transferir manualmente estos cambios.

/noimplicitbaseless

Especifica que TFVC no hará una combinación implícita sin base entre dos elementos que tengan el mismo nombre relativo en dos árboles de control de versiones no relacionados.

/nosummary

Omite el resumen de conflictos, errores y advertencias.

/noprompt

Suprime las solicitudes de entrada.

/conservative

Da lugar a más conflictos cuando se combina una rama con otra.

/format

Especifica los formatos de los conflictos de combinación de resumen:

  • Brief (valor predeterminado): resume solo el número total de conflictos, advertencias y errores.
  • Detailed: resume no solo el número total de conflictos, advertencias y errores, sino que también muestra detalles sobre cada conflicto.

Nota:

Esta opción solo se aplica cuando la salida contiene un resumen de conflictos. No se puede mostrar el resumen si se usa la opción /nosummary o la combinación ha generado menos de 10 conflictos, advertencias y errores.

/login

Especifica el nombre de usuario y la contraseña para autenticar al usuario con Azure DevOps.

Observaciones

Puede usar el comando merge de la utilidad de línea de comandos tf para aplicar cambios en una rama de origen existente a una rama de destino existente. Puede combinar una revisión individual o un conjunto de cambios completo en la rama de destino. Puede combinar los cambios desde la rama de origen en la de destino, o bien desde la de destino en la de origen.

El comando merge también permite consultar los cambios en una rama de origen que no se han migrado a la rama de destino. El comando también le permite indicar que ciertos cambios nunca se combinarán desde el origen al destino y ya no se mostrarán como candidatos para una operación de combinación.

Para más información sobre cómo usar la utilidad de línea de comandos tf, vea Uso de comandos de control de versiones de Team Foundation.

Combinación sin base

Use la combinación sin base para combinar elementos que no se bifurcan directamente entre sí. Para realizar una combinación sin base, debe usar el comando tf merge. Al realizar una combinación sin base, TFVC no tiene información sobre la relación de los archivos de las ramas. En una combinación sin base, debe realizar la resolución manual de los conflictos. Después de realizar la combinación sin base y resolver los conflictos, TFVC registra el historial de combinación y establece una relación entre las carpetas y los archivos.

Cuando se ejecuta tf merge, TFVC realiza una combinación sin base implícita entre elementos que tienen el mismo nombre relativo en dos árboles controlados por versiones relacionados anteriormente. Por ejemplo, es posible que quiera combinar las ramas relacionadas $SRC y $TGT. Las dos ramas contienen un archivo no relacionado denominado a.txt. Cuando se ejecuta tf merge, TFVC establece una relación entre los dos archivos a.txt si los son iguales, el cifrado compatible con FIPS está deshabilitado y el archivo de origen no está relacionado con ningún otro archivo del destino.

Si ejecuta tf merge con la opción /noimplicitbaseless establecida, cuando TFVC intenta combinar las dos ramas, los dos archivos a.txt crean un conflicto de espacio de nombres al intentar insertar los cambios en el repositorio. Para resolver el conflicto, debe cambiar el nombre de uno de los archivos.

Ejemplos

En el ejemplo siguiente se combinan los cambios de MyFile_beta1 que no se han combinado en MyFile_RTM.

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

En el ejemplo siguiente se combina el conjunto de cambios 137 en branch2.

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

En el ejemplo siguiente se combinan todos los conjuntos de cambios hasta el conjunto de cambios 137 en branch2.

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

En el ejemplo siguiente se imprime una lista de los conjuntos de cambios de branch1 que no se han combinado en branch2.

c:\projects>tf merge /candidate branch1 branch2 /recursive

En el ejemplo siguiente se imprime una lista de los conjuntos de cambios de branch2 que no se han combinado en branch1.

c:\projects>tf merge /candidate branch2 branch1 /recursive

En el ejemplo siguiente se descarta el conjunto de cambios 137 como candidato para la combinación en branch2.

c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive

En el ejemplo siguiente se descartan todos los conjuntos de cambios hasta el 137 como candidatos para la combinación en branch2.

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive