TFVC api:如何获取文件属性(“可执行文件”和“符号链接”)
Posted
技术标签:
【中文标题】TFVC api:如何获取文件属性(“可执行文件”和“符号链接”)【英文标题】:TFVC api: how to get the file properties ('executable' and 'symlink') 【发布时间】:2021-01-10 03:20:09 【问题描述】:我在 TFVC 版本控制中有一些可执行文件和其他符号链接。
当您查看 UI 中的变更集时,我们可以看到该文件具有一个属性:
当使用 TFVC API callVersionControl.QueryHistory()
和 nuget 包Microsoft.TeamFoundationServer.Client
时,我还可以看到与添加文件对应的更改有一个属性:
我的问题是使用 TFVC Api,我不知道如何获取此更改的属性。
我想找到一种方法来了解包含在变更集中的这种“属性”变更类型的类型。尤其是如何知道这个“属性”是“可执行”属性还是“符号链接”属性。
TFVC 似乎知道文件是符号链接,因为它显示的图标有点不同(注意箭头):
检索到的对象类型:
变更集:Microsoft.TeamFoundation.VersionControl.Client.Changeset
更改:Microsoft.TeamFoundation.VersionControl.Client.Change
文件/项目:Microsoft.TeamFoundation.VersionControl.Client.Item
(包含名为 Attributes
、Properties
或 PropertyValues
的集合,可能包含数据但为空)
Internet 或 MSDN 文档在这里没有帮助:(
注意:目标是添加对git-tfs的支持
【问题讨论】:
【参考方案1】:您可以在 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 对象:
【讨论】:
对于符号链接,ItemType
仍然是 File
。谢谢。我会去TfvcItem
看看。您知道如何检索“可执行”标志吗?
布尔值IsSymbolicLink
似乎总是false
。所以这个解决方案不起作用:(但我会尝试其他一些电话,看看我是否可以填充它......
好的。我可以在调用GetItemsAsync()
时填充IsSymbolicLink
属性。所以没关系。但是对于“可执行”标志,你有什么想法吗?
在ContentMetadata
对象的ContentMetadata
属性中查看项目的extension
怎么样。
ContentMetadata
这似乎很有趣,所以我已经看过它但总是null
:(【参考方案2】:
“Team Explorer Everywhere”以某种方式创建了一个 KVP,其密钥名为 Microsoft.TeamFoundation.VersionControl.Executable
,我猜是 ContentMetadata
,它显然是 NULL - 应该在 API 中的哪里获取这些数据?
【讨论】:
我没有足够的声望添加到上一组 cmets。以上是关于TFVC api:如何获取文件属性(“可执行文件”和“符号链接”)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用C#(Visual Studio)从TFS(Team Foundation Server)获取/复制文件
获取“驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置”虽然设置正确的路径
如何以编程方式将 Google Sheet 脚本发布/部署为 API 可执行文件?
无法通过REST API为punlisherId = tfs和eventId tfvc.checkin创建VSTS webhook订阅