我正在尝试编写批处理脚本以通过从TFS& amp;中导出来移动网站项目文件。添加到应用服务器。要求是导出/导入更改集中存在的所有文件。
我想使用命令行获取更改集中的所有文件名。然后可以使用文件名来执行这些特定文件的获取。
我已经尝试过了,但是我已经尝试了tf变更集命令
但是在max,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
答案 0 :(得分:1)
你可以在powershell中做同样的事情,但我建议你像这样使用REST TFS Api和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);
}
根据文件的添加,更改或删除,您可能需要采取不同的处理方式。
可以通过安装NuGet包 Newtonsoft.Json 来获取JsonConvert。如果你想做更细粒度的事情,你可以构建专门的反序列化器,但上面是获取文件名的快速而肮脏的方法。
答案 1 :(得分:-1)
@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.0\Common7\IDE\TF.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