Как работать с файлами tfs из кода?

У меня есть настольное приложение для изменения некоторых XML-файлов, находящихся под управлением исходного кода. Программа должна иметь возможность получать файлы, изменять их и выполнять регистрацию. Я уже знаю, как сделать все это с tf; однако я не знаю, как запустить командную строку разработчика для Visual Studio с помощью кода. Также программа будет установлена ​​на компьютеры без Visual Studio; поэтому у них нигде не будет команды tf. Принимая во внимание все это, как лучше всего выполнить следующие команды?

mkdir C:\Temp\PROGRAM
cd C:\Temp\PROGRAM && tf workspace /new /noprompt PROGRAM /collection:"http://myserver:8080/tfs/mycollection"
cd C:\Temp\PROGRAM && tf workfold /map $/my/server/route/to/map C:\Temp\PROGRAM
cd C:\Temp\PROGRAM && tf get

Я знаю, что есть некоторые библиотеки для работы с tfvc, но я ими не пользовался и они не кажутся такими понятными, как запуск команд. Любое решение, которому удастся сделать то же самое, что и приведенные выше команды, будет приветствоваться.

  1. Создать рабочее пространство
  2. Сопоставьте папку с сервера с локальной папкой
  3. Загрузите (извлеките) все файлы в этой папке (не обязательно рекурсивно)

Если есть возможность включить в решение:

  1. Сделать регистрацию измененных файлов

ИЗМЕНИТЬ

Код, который я наконец использовал, это

static void Load(string local, string server, Uri urlCollection)
{
    Directory.CreateDirectory(local);
    Workspace workspace = GetWorkspace(urlCollection, "MyWorkspaceName");
    workspace.Map(server, local);
    workspace.Get();
}
static Workspace GetWorkspace(Uri urlCollection, string name)
{
    VersionControlServer vcs = new TfsTeamProjectCollection(urlCollection)
        .GetService<VersionControlServer>();
    try
    { return vcs.GetWorkspace(name, vcs.AuthorizedUser))}
    catch(Exception)
    { return vcs.CreateWorkspace(name, vcs.AuthorizedUser)); }
}


person Santiago Cabrera    schedule 23.07.2018    source источник


Ответы (2)


Согласно вашему описанию, вы хотите извлечь файлы с сервера TFS, а затем программно зарегистрировать измененные файлы.

Для этого вы можете использовать клиентский API TFS. Предлагаем вам просмотреть блог Бака Ходжеса, в котором показано, как создать рабочее пространство, отложить изменения, проверить эти изменения.

См. Пример API клиента Team Foundation Version Control для TFS 2010 и новее

Что касается того, как получить файлы из TFS, на веб-портале также есть несколько примеров, рекомендуем вам использовать VersionControlServer.GetItem

Примеры использования:

// Get the latest Item for local path "C:\projects\myfiles.cs"
Item item1 = versionControlServer.GetItem("C:\projects\myfiles.cs");

// Get ItemId = 12345 for changesetId = 54321
Item item2 = versionControlServer.GetItem(12345,54321);

// Get the latest Item for server path "$/ProjectName/myfile.cs"
Item item1 = versionControlServer.GetItem("$/ProjectName/myfile.cs", VersionSpec.Latest);

Вы также можете выбрать предыдущую версию исходного кода для извлечения. Полный код см. в следующих руководствах: Team Foundation Server API: программная загрузка файлов из системы контроля версий

Другой способ - использовать сценарий powershell для решения этой проблемы, пожалуйста, посмотрите здесь: Загрузить файлы с сервера TFS с помощью PowerShell

person PatrickLu-MSFT    schedule 24.07.2018

Вы можете установить на компьютеры Team Explorer Everywhere, это дает вам возможность использовать Командная строка TFS (команды «tf») без Visual Studio.

person Shayki Abramczyk    schedule 24.07.2018