我想要做的是获得可以合并到的可用分支。与您在 TFS2008 中说合并并选择目标分支时的下拉列表几乎相同。
但是,很难找到方法。
下面的代码是我在网络上找到的一些资源之间的合并,但似乎没有一个有效。我的猜测是,如果 VS2008 可以做到,我可以通过 SDK 做到,对吧?
下面的代码总是给我同样的结果。
我的存储库是这样的:
Development
Version1
Code
Version2
Code
Version3
Code
Main
Code
通常我会分支 Main > Version X。因此可以将 Main > Version X 和 Version X 合并到 Main。
下面的代码总是给我 Main 的孩子,即使我使用 Version3 文件夹查询 (tfsParentBranchPath)。
这是因为也许我使用了 TFS2010 Web 服务但指向 TFS2008(这就是为什么我标记了一些在代码中不起作用的方法)?
好吧,如果有人知道答案,请告诉我。
谢谢!
public string[] GetChildBranchesToMerge(string tfsParentBranchPath)
{
var versionControl = teamFoundationServer.GetService<VersionControlServer>();
//not supported by tfs2008
//ItemIdentifier[] identifiers = versionControl.QueryMergeRelationships(tfsParentBranchPath);
//var allBranches = versionControl.QueryBranchObjects(new ItemIdentifier(tfsParentBranchPath), RecursionType.OneLevel);
List<string> childs = new List<string>();
ItemSpec[] specs = new ItemSpec[] { new ItemSpec(tfsParentBranchPath, RecursionType.OneLevel) };
BranchHistoryTreeItem[][] branchHistoryTree = versionControl.GetBranchHistory(specs, VersionSpec.Latest);
if (branchHistoryTree.Length > 0 && branchHistoryTree[0].Length > 0)
{
var treeItem = branchHistoryTree[0][0];
if (treeItem.Children.Count > 0)
{
foreach (BranchHistoryTreeItem tia in treeItem.Children)
{
childs.Add(tia.Relative.BranchToItem.ServerItem);
}
}
}
return childs.OrderBy((s) =>
{
return s;
}).ToArray();
}