#.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. Похоже, это то, что уже было опробовано в вопросе.