#api #tfs #tfvc #tfs-sdk
#API #tfs #tfvc #tfs-sdk
Вопрос:
У меня в системе управления версиями TFVC некоторые файлы являются исполняемыми, а другие — символическими ссылками.
Когда вы смотрите на наборы изменений в пользовательском интерфейсе, мы видим, что у файла есть свойство:
При использовании вызова API TFVC VersionControl.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
, возможно, может содержать данные, но они пусты)
Документация по Интернету или MSDN здесь не поможет: (
Примечание: Цель состоит в том, чтобы добавить поддержку в git-tfs
Ответ №1:
Вы можете проверить класс TfvcItem в Libray Microsoft.VisualStudio.Услуги.Клиент. Объект TfvcItem имеет IsSymbolicLink
свойство определять, является ли элемент символической ссылкой или нет.
Вы можете получить наборы изменений, используя метод объекта TfvcHttpClient, а затем получить объект 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().Resu<
foreach (var changeset in changesets)
{
var changesetRes = tfvcClient.GetChangesetChangesAsync(changeset.ChangesetId).Resu<
foreach (var change in changesetRes)
{
var item = (TfvcItem)change.Item;
}
}
Смотрите ниже объект TfvcItem :
Комментарии:
1. Для символической
ItemType
ссылки все ещеFile
есть . Спасибо. Я посмотрюTfvcItem
. У вас есть идея о том, как получить флаг «исполняемый файл»?2. Кажется, что логическое
IsSymbolicLink
значение всегдаfalse
. Итак, это решение не работает: ( Но я попробую несколько других вызовов, чтобы узнать, смогу ли я его заполнить…3. ОК. Я могу
IsSymbolicLink
заполнить свойство при вызовеGetItemsAsync()
. Так что все в порядке. Но для флага «исполняемый файл» у вас есть идея?4. Как насчет просмотра элемента
extension
вContentMetadata
свойствеTfvcItem
объекта.5.
ContentMetadata
что кажется интересным, так что я уже смотрел на это, но всегдаnull
: (
Ответ №2:
«Team Explorer Everywhere» каким-то образом создает KVP с ключом, названным Microsoft.TeamFoundation.VersionControl.Executable
, как я предполагаю ContentMetadata
, ключом, который, по-видимому, равен НУЛЮ — где эти данные должны быть извлечены в API?
Комментарии:
1. У меня не было достаточной репутации, чтобы добавить к предыдущему набору комментариев.