如何使用 TFS 命令行获取更改集中存在的所有文件的名称
How to get name of all the files present in a change set using TFS Command line
我正在尝试编写批处理脚本,通过从 TFS 导出并添加到应用程序服务器来移动网站项目文件。要求是导出/导入更改集中存在的所有文件。
我想使用命令行获取更改集中存在的所有文件名。然后可以使用文件名在这些特定文件上执行 tf get。
我试过了,tf hostory & tf changeset 命令
但在最大值时,tf changeset 命令给出以下输出 -:
Changeset: 151 User: Ashish Chandra Gupta Date: 11 October 2016 11:38:54
Comment: Change 6(ashish)
Items: edit $/SMT/SMT/CNSMT002.aspx.vb
我需要具体的文件名 - CNSMT002.aspx.vb
@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
您也许可以在 powershell 中执行相同的操作,但我建议您像这样使用 REST TFS Api and 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获得。如果你想做更细粒度的事情,你可以构建专门的反序列化器,但上面是获取文件名的快速而肮脏的方式。
我正在尝试编写批处理脚本,通过从 TFS 导出并添加到应用程序服务器来移动网站项目文件。要求是导出/导入更改集中存在的所有文件。
我想使用命令行获取更改集中存在的所有文件名。然后可以使用文件名在这些特定文件上执行 tf get。
我试过了,tf hostory & tf changeset 命令
但在最大值时,tf changeset 命令给出以下输出 -:
Changeset: 151 User: Ashish Chandra Gupta Date: 11 October 2016 11:38:54
Comment: Change 6(ashish)
Items: edit $/SMT/SMT/CNSMT002.aspx.vb
我需要具体的文件名 - CNSMT002.aspx.vb
@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
您也许可以在 powershell 中执行相同的操作,但我建议您像这样使用 REST TFS Api and 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获得。如果你想做更细粒度的事情,你可以构建专门的反序列化器,但上面是获取文件名的快速而肮脏的方式。