首页 > 解决方案 > TFVC api:如何获取文件属性(“可执行文件”和“符号链接”)

问题描述

我在 TFVC 版本控制中有一些可执行文件和其他符号链接。

当您查看 UI 中的变更集时,我们可以看到该文件具有一个属性: 具有可执行属性的脚本

VersionControl.QueryHistory()在nuget 包中使用 TFVC API 调用时Microsoft.TeamFoundationServer.Client,我还可以看到与添加文件相对应的更改具有一个属性:

具有来自 API 的属性的文件

我的问题是使用 TFVC Api,我不知道如何获取此更改的属性。

我想找到一种方法来了解变更集中包含的这种“属性”变更类型的类型。尤其是如何知道这个“属性”是“可执行”属性还是“符号链接”属性。

TFVC 似乎知道文件是符号链接,因为它显示的图标有点不同(注意箭头):

符号链接的图标

检索到的对象类型:

Internet 或 MSDN 文档在这里没有帮助:(

注意:目标是添加对git-tfs的支持

标签: apitfstfvctfs-sdk

解决方案


您可以查看Libray Microsoft.VisualStudio.Services.Client中的TfvcItem类。TfvcItem 对象具有确定该项目是否为符号链接的属性。IsSymbolicLink

您可以使用TfvcHttpClient对象方法获取 ChangeSets,然后获取 TfvcItem 对象。请参见下面的示例:

 string tfsurl= "http://instance/tfs/DefaultCollection";
 string Project = "project";
 
 NetworkCredential netCred = new NetworkCredential("username", @"password", "domain");
            
 Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(netCred);
     
 VssConnection _connection = new VssConnection(new Uri(tfsurl), winCred);

 TfvcHttpClient tfvcClient = _connection.GetClient<TfvcHttpClient>(); 

 var changesets = tfvcClient.GetChangesetsAsync().Result;
      
 foreach (var changeset in changesets)
 {
       var changesetRes =  tfvcClient.GetChangesetChangesAsync(changeset.ChangesetId).Result;
            
       foreach (var change in changesetRes) 
       {
          var item = (TfvcItem)change.Item;
       }
  }

请参见下面的 TfvcItem 对象:

在此处输入图像描述


推荐阅读