如何获取文件添加到TFS的日期

时间:2015-09-03 14:00:05

标签: c# command-line tfs tfs2013

对于特定分支,我想生成一个文件名列表以及它们最初添加到TFS的日期。我不介意用什么方法来获取它,但命令行或C#解决方案会很棒。我还没有包含任何我尝试过的东西,因为我真的不知道从哪里开始!

我试图得到这样的结果:

Date added     File name
========================
10/02/2015     File1.txt
16/05/2015     File2.txt
19/08/2014     File3.txt

2 个答案:

答案 0 :(得分:3)

好的,这可以完成,但我不知道这会有多好,它可能取决于您的代码库大小。

使用TFS API上的VersionControlServer我将获取所有项目,然后查询历史记录以获取第一个变更集然后获取详细信息的每个项目:

    void Main()
{
    const String CollectionAddress = "http://tfs:8080/tfs/DefaultCollection";

    using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(CollectionAddress)))
    {
        tfs.EnsureAuthenticated();
        var server = tfs.GetService<VersionControlServer>();

        server.GetItems(
            path: "$/Code/",
            version: VersionSpec.Latest,
            recursion: RecursionType.Full,
            deletedState: DeletedState.NonDeleted,
            itemType: ItemType.File)
        .Items
        .Select(
            item =>
                server
                .GetBranchHistory(
                    itemSpecs: new[] { new ItemSpec(item.ServerItem, RecursionType.None), },
                    version: VersionSpec.Latest)
                .Single()
                .Select(
                    a =>
                        new
                        {
                            a.Relative.BranchToItem.ChangesetId,
                            a.Relative.BranchToItem.CheckinDate,
                            a.Relative.BranchToItem.ServerItem,
                        })
                .Single())
        .Dump(5);
    }
}

您可以从here下载有效的Linqpad脚本 - 定位VS2013对象模型。

答案 1 :(得分:0)

MSDN TFS History command开始,您似乎可以从Visual Studio命令提示符运行以下命令,该命令将获取特定日期的更改集文件

tf history "local path" /version:D2015-09-03 /recursive /noprompt