C#TFS获取更改特定文件的最后一个用户

时间:2016-11-10 16:30:10

标签: c# tfs

根据特定的文件的位置和名称,我想使用 C#以编程方式获取 last 的名称< strong>用户在 TFS 更改此文件。 (最后的更改日期会很好)

虽然没有直接关联,但作为上下文信息,我使用以下内容根据文件的本地路径从TFS获取最新信息:

        var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(LocalPath);
        using (var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri))
        {
            var workspace = workspaceInfo.GetWorkspace(server);
            GetRequest request = new GetRequest(new ItemSpec(LocalPath, RecursionType.Full), VersionSpec.Latest);
            workspace.Get(request, GetOptions.Overwrite);
        } 

感谢您提供任何提示

3 个答案:

答案 0 :(得分:1)

我创建了一个简单的代码供您参考:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string tfsurl = "http://tfscollectionurl";
            TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl));
            VersionControlServer vcs = ttpc.GetService<VersionControlServer>();
            string[] path = { "$/Path/To/Item.cs" };
            ItemSpec[] itemSpecs = ItemSpec.FromStrings(path, RecursionType.Full);
            ItemSpec itemSpec = itemSpecs.Cast<ItemSpec>().First();
            IEnumerable<Changeset> changesets = vcs.QueryHistory(itemSpec);
            Changeset latestchangeset = changesets.Cast<Changeset>().First();
            Console.WriteLine(latestchangeset.Committer);
            Console.WriteLine(latestchangeset.CommitterDisplayName);
            Console.WriteLine(latestchangeset.Owner);
            Console.WriteLine(latestchangeset.OwnerDisplayName);
            Console.WriteLine(latestchangeset.CreationDate);
            Console.ReadLine();
        }
    }
}

答案 1 :(得分:0)

您可以使用IVersionControlStore.QueryHistory()来获取变更集,默认情况下,结果会先返回最近的结果,并且您可以请求顶部的变更,还有一个重载以获取该变更集中的更改

答案 2 :(得分:0)

我会添加我发现的内容以防其他人(它似乎对我有用)

Mdl_Ens = fitcnb([NB1_Posterior; NB2_Posterior],TrainingTargets,'Distribution','normal');
NEns_cumulLoss = NEns_cumulLoss + resubLoss(Mdl_Ens);