El código en la respuesta primaria no siempre devuelve todas las ramas de destino. En mi prueba, devolvió una ramificación menos que el cuadro de diálogo de combinación de Visual Studio.
Hay una forma más simple y segura de obtener la lista de ramas de destino. Se trata de la misma manera que Visual Studio obtiene la lista para el cuadro de diálogo Combinar:
using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
class Program
{
static void Main(string[] args)
{
string tfsUri = "http://tfs:8080/tfs/MyCollection";
string tfsItemSpec = "$/MyTeamProject/Folder";
List<string> branches = GetPathsEligibleForMerge(tfsUri, tfsItemSpec);
foreach (string branch in branches)
{
Console.WriteLine(branch);
}
}
public static List<string> GetPathsEligibleForMerge(
string tfsUri, string tfsBranchPath)
{
List<string> tfsEligibleMergePaths = new List<string>();
using (TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(tfsUri)))
{
VersionControlServer vcs =
(VersionControlServer)tfs.GetService(typeof(VersionControlServer));
foreach (ItemIdentifier mergeItem in vcs.QueryMergeRelationships(tfsBranchPath))
{
if (!mergeItem.IsDeleted && !string.IsNullOrWhiteSpace(mergeItem.Item))
{
tfsEligibleMergePaths.Add(mergeItem.Item);
}
}
}
tfsEligibleMergePaths.Sort(StringComparer.OrdinalIgnoreCase);
return tfsEligibleMergePaths;
}
}
Este código devuelve siempre la misma lista que el cuadro de diálogo Combinar.
Me puede estar faltando algo aquí, pero parece que QueryMergeRelationships devuelve una lista de elementos donde existe alguna relación, incluyendo una relación principal, contrariamente a su nomenclatura variable; su código asume que está utilizando la rama raíz, y luego proporcionará una lista de todos los hijos porque es la raíz. Pero si pasa en una sucursal secundaria, también devolverá la sucursal principal, que no cumpliría con los requisitos de la pregunta del Capitán Comic: "Necesito averiguar qué otras carpetas se han ramificado a partir de ella", lo que implícitamente significa solo el hijo se requieren ramas – paulyphonic
Es cierto. Modifiqué las variables y el nombre del método. Puede haber una forma en la API para identificar qué ruta es primaria y excluirla. –