【问题标题】:TFS 2010 programmatically determining item branchTFS 2010 以编程方式确定项目分支
【发布时间】:2012-08-11 03:36:55
【问题描述】:

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

【问题讨论】:

  • 您指的是工作区中的文件,还是源代码管理路径中的文件?
  • 也许我会更详细地描述我的问题,我想做的是制定自定义策略来确定变更集中的所有文件是否都来自单个分支,所以回答你的问题我不这么认为真的很重要,因为 PendingChange 有机器人路径,LocalItem - 工作区路径,ServerItem - 源代码控制路径。
  • 谢谢。请将该描述添加到您的问题中。您提供的信息越多越好。但是,我担心您希望变更集中的所有文件都来自源代码控制树中高于所有文件的分支点。您的源代码管理是否以“$/Main”开头并从那里分支?

标签: branch


【解决方案1】:

我有一个非常相似的问题。我找到了解决办法,代码如下:

...
// 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! :)
  }
}
...

我希望这可以帮助解决这个问题的人,我认为操作已经解决了它(他问这个问题已经有一段时间了)。

【讨论】:

    【解决方案2】:

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

    但是,您可以做出一些假设并相当有效地做到这一点 - 因为一个分支不能在 tfs 2010 中的另一个分支中。找到所有要签入的文件的公共路径子集并测试它们,如果没有分支,那么它们不属于同一个分支。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多