繁体   English   中英

如何从指定工作区中特定日期修改的TFS获取文件列表?

[英]How to get a list of files from TFS modified on a certain date in the specified workspace?

我必须创建一个在指定日期修改(签出或签入)的文件列表。

我有用户名和他们的工作区名称作为我的函数的参数。

有什么建议么?

我想你想组合使用VersionControlServer.QueryHistory来确定特定日期文件的变化,并结合VersionControlServer.QueryWorkspaces来获取工作空间,以提取你想要查询的工作文件夹映射。递归历史。

我很确定你无法分辨出特定变更集来自哪个工作区,而没有使用自定义签入策略做一些时髦的事情,以便首先将这些信息放入变更集中。 也就是说,我不知道一种方法可以告诉两个变化,而不是同一个开发人员碰巧在两个不同的工作空间上更改它们。 那么可能更容易的是找出是否可以删除工作空间要求,只需使用一次QueryHistory调用,在特定日期返回特定用户的文件更改?

这就是我最终做的事情(我只留下了与问题相关的代码):

感谢Martin的指示!

void GetPastTFSChangesByDate()
    {
        using (TfsTeamProjectCollection tfsServer = new TfsTeamProjectCollection(_tfsServerUri))
        {
            tfsServer.Authenticate();

            if (tfsServer != null)
            {
                VersionControlServer vcServer = tfsServer.GetService(typeof (VersionControlServer)) as VersionControlServer;

                if (vcServer != null)
                {
                    var usersWorkspaces = vcServer.QueryWorkspaces(null, vcServer.AuthorizedUser, Environment.MachineName).ToList();

                    List<ChangedTFSItem> foundPastChanges = null;

                    if (_isSearchForPastChangesOn)
                    {
                        var allPastChangesets = vcServer.QueryHistory(@"C:\TFS",
                                                                      VersionSpec.Latest,
                                                                      0,
                                                                      RecursionType.Full,
                                                                      Environment.UserName,
                                                                      null,
                                                                      null,
                                                                      3000,
                                                                      true,
                                                                      false).Cast<Changeset>()
                            .Where(x => x.Committer.Contains(Environment.UserName));


                        _foundPastChanges = allPastChangesets
                            .SelectMany(x => x.Changes)
                            .Where(x => x.Item.CheckinDate.Date == _searchDate.Date) // Check-in date filter.
                            .DistinctBy(x => x.Item.ServerItem, x => x.Item.ServerItem.GetHashCode())
                            .Select(x => new ChangedTFSItem()
                                             {
                                                 FileName = "Uknown",
                                                 LocalItem = "Uknown",
                                                 ServerItem = x.Item.ServerItem,
                                                 ChangeTypeName = "",
                                                 ChangeDate = x.Item.CheckinDate.ToString(),
                                                 Workspace = "Uknown"
                                             }).ToList();

                        //Matching those foundPastChanges to the workspace corresponding file locations. 
                        if (usersWorkspaces.Any())
                        {
                            foreach (var item in foundPastChanges)
                            {
                                usersWorkspaces.ForEach(ws =>
                                                            {
                                                                item.LocalItem = ws.GetLocalItemForServerItem(item.ServerItem);
                                                                item.Workspace = ws.Name;
                                                            });

                                item.FileName = Path.GetFileName(item.ServerItem);
                            }
                        }
                    }
                }
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM