如何使用TFS命令行获取更改集中存在的所有文件的名称

时间:2016-10-18 07:29:04

标签: .net command-line tfs tfs2015

我正在尝试编写批处理脚本以通过从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

2 个答案:

答案 0 :(得分:1)

你可以在powershell中做同样的事情,但我建议你像这样使用REST TFS ApiJsonConvert

        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