내가 원하는 것은 내가 병합 할 수있는 분기를 얻는 것입니다. TFS2008에서 병합을 말하고 대상 분기를 선택할 때 드롭 다운과 거의 같습니다.TFS SDK : 자식 분기 가져 오기
그러나 방법을 찾는 것은 매우 어려웠습니다.
아래의 코드는 웹에서 찾은 일부 리소스 간의 병합이지만 아무 것도 작동하지 않는 것 같습니다. 내 생각 엔 VS2008이 그것을 할 수 있다면 SDK를 통해 할 수 있다는 것입니다.
아래 코드는 항상 동일한 결과를 제공합니다.
내 저장소는 다음과 같이이다 :
Development
Version1
Code
Version2
Code
Version3
Code
Main
Code
을 그리고 일반적으로 나는 병합 홈페이지 수행 할 수 있도록 홈페이지> 버전 X.> 홈페이지에 버전 X 및 버전 X를 분기.
아래 코드는 Version3 폴더로 (tfsParentBranchPath)를 쿼리하고 있어도 항상 Main의 하위 항목을 제공합니다.
아마도 TFS2010 웹 서비스를 사용했지만 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();
}