TFS 2010:获取变更集id列表

本文关键字:id 列表 2010 获取 TFS | 更新日期: 2023-09-27 18:17:38

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

  1. 检索TFS中的所有更改集。
  2. 检索所有更新于指定更改集的更改集。

我做了一些谷歌搜索,发现了一些链接,并设法提出了一些代码。我似乎想不出调用该方法来获取变更集项的完整列表。我把一些东西拼凑在一起得到这个,但想知道是否有人可以帮助我:

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的变更集会抛出'ResourceAccessException'异常,这就是为什么添加了处理程序。

关于如何以"适当"的方式做到这一点,有什么建议吗?

我使用Visual Studio 2010与TFS 2010。应用程序正在用c#编写,作为。net 4.0应用程序。

TIA

TFS 2010:获取变更集id列表

试试这个:

  // 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>();

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

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