2011-08-08 58 views
5

如何以编程方式确定此文件属于哪个分支?我花了3个小时试图解决这个问题,但没有结果。我发现这个主题,但它不是我想要的:How to programmatically get information about branches in TFS?以编程方式确定项目分支的TFS 2010

+0

您是指工作区中的文件还是源控制路径中的文件? –

+0

也许我会更详细地描述我的箴言,我想要做的是有自定义策略,它确定变更集中的所有文件是否来自单个分支,因此回答您的问题我不认为这真的很重要,因为PendingChange有bot路径,LocalItem - 工作区路径,ServerItem - 源控制路径。 – Krzysiek

+0

谢谢。请将该说明添加到您的问题中。你提供的信息越多越好。但是,我担心你要求变更集中的所有文件来自源代码管理树中高于所有文件的分支点。你的源代码控制是以“$/Main”开头并从那里分支? –

回答

2

我发现获取特定文件的分支信息的唯一方法是使用VersionControlServer.QueryBranchObjects查询文件夹结构中的每个可能分支到根。

然而,你可以做一些假设,并相当有效地做到这一点 - 因为一个分支不能在tfs 2010的另一个分支。找到所有文件路径的共同子集被检入并测试它们,如果没有分支他们不属于同一个分支。

4

我有一个非常类似的问题。我发现了一个解决的办法,这里是代码:

... 
// get all branches 
VersionControlServer vcs = tfs.GetService(typeof(VersionControlServer)); 
BranchObject[] allBranches = vcs.QueryRootBranchObjects(RecursionType.Full); 

string myItem = "$/My Project/some Path including the branch/myFile.txt"; 

foreach(BranchObject branch in allBranches) 
{ 
    if(myItem.Contains(branch.Properties.RootItem.Item)) 
    { 
    // branch is the branch to which the item belongs! :) 
    } 
} 
... 

我希望这可以帮助别人解决这个问题,我觉得运已经解决了这个问题(它已经有一段时间,因为他问的问题)。

相关问题