如何从指定日期获取TFS文件列表?

时间:2015-07-15 13:56:58

标签: windows visual-studio-2010 c#-4.0 tfs tfs2010

我在TFS中有一个Visual Studio 2010 C#项目。我想在特定日期之前从TFS下载所有文件。

使用C#中的TFS API执行此操作的最佳方法是什么? 我做了什么:从TFS获取所有项目项目,为每个项目检查入住日期并下载它。不幸的是,我有很多这些文件,需要很长时间才能全部下载,然后按日期过滤它们。

我的代码:

var tfs = RegisteredTfsConnections.GetProjectCollection(new Uri("MyTfsUri"));
var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfs);
var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));
ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full);

foreach (var item in itemsSqlScripts.Items)
{
                if (item.CheckinDate > date)
                {
                    item.DownloadFile("C:\\SqlScripts\\" + Path.GetFileName(item.ServerItem));
                }
}

我想要这样的事情:

ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full, and here parameter filter -> for example new DateTime(2015, 5, 1, 0, 0, 0);

我观看并阅读:

tfs.GetService<VersionControlServer>().QueryHistory(...)

但我不知道如何使用此功能来做我想要的事情:(

请帮助

1 个答案:

答案 0 :(得分:0)

您可以这样做:

DateTime targetDate = DateTime.Now.AddDays(-1);
string downloadLocation;

var changes = versionControl.QueryHistory(
            "$/MyProject",
            VersionSpec.Latest,
            0,
            RecursionType.Full,
            null,
            new DateVersionSpec(targetDate),
            VersionSpec.Latest,
            int.MaxValue,
            true,
            false);

foreach (Changeset changeset in changes)
{
    foreach (var change in changeset.Changes.Where(c => c.Item.ItemType == ItemType.File))
    {
        change.Item.DownloadFile(downloadLocation + change.Item.ServerItem.Substring(2));
    }                                
}