Как получить имя всех файлов, присутствующих в наборе изменений, с помощью командной строки TFS

#.net #command-line #tfs #tfs-2015

#.net #командная строка #tfs #tfs-2015

Вопрос:

Я пытаюсь написать пакетный скрипт для перемещения файлов проекта веб-сайта путем экспорта из TFS и добавления на сервер приложений. Требуется экспортировать / импортировать все файлы, присутствующие в наборе изменений.

Я хочу получить все имена файлов, присутствующие в наборе изменений, с помощью командной строки. Затем имя файла можно использовать для выполнения tf get для этого конкретного файла.

Я пробовал команды tf hostory и tf changeset

Но при максимальном значении команда tf changeset выдает следующий вывод -:

 Changeset: 151 User: Ashish Chandra Gupta Date: 11 October 2016 11:38:54
  

Комментарий: Изменение 6 (ashish)

Элементы: редактировать $/SMT/ SMT/CNSMT002.aspx.vb

Мне нужно конкретное имя файла — CNSMT002.aspx.vb

Ответ №1:

Возможно, вы сможете сделать то же самое в powershell, но я бы посоветовал вам использовать Api REST TFS и JsonConvert следующим образом:

         var collectionUrl = "http://YOURSERVER:8080/tfs/DefaultCollection/";
        var client = new WebClient { UseDefaultCredentials = true };

        var changesetId = 181972;

        string json = client.DownloadString($"{collectionUrl}_apis/tfvc/changesets/{changesetId}/changes?api-version=1.0");
        XDocument document = JsonConvert.DeserializeXNode(json, "changeset");
        var files = document.Descendants("path");
        foreach (var file in files)
        {
            Console.WriteLine(file.Value);
        }
  

Возможно, вам придется обрабатывать вещи по-разному, в зависимости от того, добавлены, изменены или удалены файлы.

JsonConvert можно получить, установив пакет NuGet Newtonsoft.Json. Вы можете создавать специализированные десериализаторы, если хотите выполнять более мелкие операции, но выше приведен быстрый и грязный способ извлечения имен файлов.

Комментарии:

1. Можно ли также использовать API-интерфейсы TFS REST для ПОЛУЧЕНИЯ определенных наборов изменений, создания рабочей области и т. Д. что можно сделать с помощью командной строки TFS.

2. @AshishChandra Да, вы можете использовать API-интерфейсы TFS REST для получения определенного файла. Насколько я вижу, вы не можете создавать / редактировать рабочие области.

Ответ №2:

 @echo off
SET tfs=http://YOUR_TFS_SERVER:8080/
:number
ECHO Enter changeset number (0 to exit):
SET /p chg=
IF NOT %chg% GTR 0 GOTO end
"%ProgramFiles%Microsoft Visual Studio 9.0Common7IDETF.exe" changeset /server:%tfs% %chg% /noprompt
GOTO number
:end
  

Источник: https://coderwall.com/p/aqypwq/get-a-copy-pasteable-list-of-files-from-a-changeset-in-tfs

Комментарии:

1. Похоже, это то, что уже было опробовано в вопросе.