TFS 2010:获取变更集ID列表

时间:2011-12-13 17:50:02

标签: c# visual-studio-2010 tfs2010

我需要创建两个方法如下:

  1. 检索TFS中的所有更改集。
  2. 检索比指定变更集更新的所有变更集。
  3. 我已经完成了一些谷歌搜索,发现了一些链接并设法提出了一些代码。我似乎无法通过调用方法来获取变更集项的完整列表。我已经把一些东西搞得一团糟但想知道是否有人可以帮助我:

    TfsTeamProjectCollection projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://mydomain.com:8080/tfs"));
    VersionControlServer versionControl = projectCollection.GetService<VersionControlServer>();
    int latestId = versionControl.GetLatestChangesetId();
    
    List<Changeset> changesetList = new List<Changeset>();
    for (int i = 1; i < latestId; i++)
    {
        try
        {
            Changeset cs = versionControl.GetChangeset(i);
            if (cs != null)
            {
                changesetList.Add(cs);
            }
        }
        catch (ResourceAccessException)
        {
        }
    }
    

    获取某些ID的变更集会引发资源访问异常&#39;异常,这就是添加处理程序的原因。

    有关如何在&#34;适当&#34;办法?

    我正在使用Visual Studio 2010和TFS 2010.应用程序是用C#编写的.Net 4.0应用程序。

    TIA

2 个答案:

答案 0 :(得分:26)

试试这个:

  // Replace with your setup
  var tfsServer = @"http://tfsserver:8080/tfs/SW";
  var serverPath = @"$/PCSW/ProjectX/Main";

  // Connect to server
  var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServer));
  tfs.Connect(ConnectOptions.None);
  var vcs = tfs.GetService<VersionControlServer>();

  // Create versionspec's. Example start with changeset 529
  VersionSpec versionFrom = VersionSpec.ParseSingleSpec("C529", null);
  // If you want all changesets use this versionFrom:
  // VersionSpec versionFrom = null;
  VersionSpec versionTo = VersionSpec.Latest;

  // Get Changesets
  var changesets = vcs.QueryHistory(
    serverPath,
    VersionSpec.Latest,
    0,
    RecursionType.Full,
    null,
    versionFrom,
    versionTo,
    Int32.MaxValue,
    true,
    false
    ).Cast<Changeset>();

答案 1 :(得分:1)

如果只是范围内的变更集编号,则可以使用以下代码。

foreach (var changeset in changesets)
{ 
   Console.WriteLine(changeset.ChangesetId); 
}