2010-07-13 59 views
5

如果给定tfs中的特定文件夹路径,我需要递归查找文件夹内给定变更集的所有文件和文件夹。换句话说,我需要在给定的变更集中获得tfs路径的传递闭包。我这样做的问题是列出tfs中的特定文件夹的内容.. 这将如何在C#中可能?列出tfs中文件夹的所有内容

回答

6

我假设你想“文件夹中的内容作为变更X的”,而不是

“那名变更X的部分文件夹内容”

GetIte MS是使用正确的判罚,只是传递一个版本规格为您所感兴趣的变更

http://msdn.microsoft.com/en-US/library/bb138911.aspx

因此,假设你已经有了一个对VersionControlServer实例的引用:

var myFolderAtChangeset17 = versionControlServer.GetItems("$/MyFolder", new ChangesetVersionSpec(17), RecursionType.Full); 

如果我误解你碰巧想“那名变更X的部分文件夹内容”,有这样做,但得到的变更与GetChangeset,只是过滤Changes是很简单的几个不同的方法。

+0

我不知道该版本的规范的一部分。这是我想要的。谢谢... – Sidd 2010-07-14 15:28:58

-1

您可以使用changeset webservice获取包含特定变更集的所有已更改项目的XML文档。然后,只需循环查看已更改项目的列表,看看它们是否在您正在寻找的路径中。

这里的URL到变更Web服务:

的http:// your_tfs_server /VersionControl/Changeset.aspx?artifactMoniker= your_changeset_number & webView的=真

+0

可以我只是做一个VersionControlServer.getItems()和环衍生阵列救援人员到场。我只是现在试试... – Sidd 2010-07-13 18:54:10

+0

Downvoted(对不起大卫)。您不应该在任何(正常)情况下使用web服务来执行此操作。这些是内部的,如有更改,恕不另行通知 – Robaticus 2010-07-13 19:17:28

2

像这样的东西可能会更你在找什么对于。这将获取变更集中的所有更改并遍历它们,从而识别给定路径中的变更。这可以通过LINQ查询被缩短,但我离开它多一点膨胀,得到什么,我想说的要点:

TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080"); 
    VersionControlServer vcs = tfs.GetService<VersionControlServer>(); 

    Changeset cs = vcs.GetChangeset(6284868); 

    foreach (Change change in cs.Changes) 
    { 
     if (change.Item.ServerItem.StartsWith("$/Application Common/Dev/src")) 
     { 
      System.Diagnostics.Debug.WriteLine(string.Format("Changeset {0}, file {1}, changes {2}", 
       cs.ChangesetId, change.Item.ServerItem, change.ChangeType.ToString())); 
     } 
    } 
+0

谢谢..但我并不需要一个特定的变更项目。我需要tfs中给定文件夹下的所有文件和文件夹。 – Sidd 2010-07-13 19:42:08

+1

然后你可以使用GetItems()...但你的问题确实提到了变更集。 – Robaticus 2010-07-13 21:04:08

0

我觉得像这样的工作..


    TeamFoundationServer tfs = new TeamFoundationServer("http://tfs:8080"); 
    VersionControlServer vcs = tfs.GetService(); 
    ItemSet items; 

    items = vcs.GetItems(tfsPath, RecursionType.Full); 

如果您有任何其他想法,请把它们..

+0

你的代码丢失,可以定义tfsPath传递给GetItems – 2011-10-04 21:09:01

相关问题