c# TFS获取最后一个更改特定文件的用户
本文关键字:文件 用户 TFS 获取 最后一个 | 更新日期: 2023-09-27 18:17:31
基于特定的文件的位置和名称,我想使用 c# 以编程方式获得最后用户的名称,以便在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);
}
谢谢你的任何提示
我创建了一个简单的代码供您参考:
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();
}
}
}
您可以使用IVersionControlStore.QueryHistory()来获取变更集,默认情况下,结果首先返回最近的,并且您可以请求只是顶部'更改,有一个过载也可以获得该变更集的更改
我将添加我发现的,以防它可能会帮助别人(它似乎对我有用)
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(modifiedPath);
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
VersionControlServer vcServer = tpc.GetService<VersionControlServer>();
using (var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri))
{
var workspace = workspaceInfo.GetWorkspace(server);
QueryHistoryParameters historyParams = new QueryHistoryParameters(modifiedPath, RecursionType.Full);
historyParams.MaxResults = 1;
Changeset changeset = vcServer.QueryHistory(historyParams).FirstOrDefault();
string theUser = changeset.CommitterDisplayName;
MessageBox.Show(theUser);
}