【问题标题】:Search through TFS git repository files using C#使用 C# 搜索 TFS git 存储库文件
【发布时间】:2018-02-07 08:08:20
【问题描述】:

我正在尝试让我的 C# 应用程序遍历所有 TFS git 项目并在文件中搜索字符串模式。我以这种方式开始我的连接。

 var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://tfs.domain.com/tfs"));
 tfs.EnsureAuthenticated();
 var gitSvc = tfs.GetService<GitRepositoryService>();

我没有看到一种方法来获取所有 git 项目信息以使其通过 foreach 循环。我从here 看到了一些代码,它将从 tfs.Getservice 获取所有项目。

 var tfs = TfsTeamProjectCollectionFactory
         .GetTeamProjectCollection(new Uri("http://{tfsserver}:8080/tfs"));

        tfs.EnsureAuthenticated();

        var versionControl = tfs.GetService<VersionControlServer>();


        StreamWriter outputFile = new StreamWriter(@"C:\Find.txt");
        var allProjs = versionControl.GetAllTeamProjects(true);
        foreach (var teamProj in allProjs)
        {
            foreach (var filePattern in filePatterns)
            {
                var items = versionControl.GetItems(teamProj.ServerItem + "/" + filePattern, RecursionType.Full).Items
                            .Where(i => !i.ServerItem.Contains("_ReSharper"));  //skipping resharper stuff
                foreach (var item in items)
                {
                    List<string> lines = SearchInFile(item);
                    if (lines.Count > 0)
                    {
                        outputFile.WriteLine("FILE:" + item.ServerItem);
                        outputFile.WriteLine(lines.Count.ToString() + " occurence(s) found.");
                        outputFile.WriteLine();
                    }
                    foreach (string line in lines)
                    {
                        outputFile.WriteLine(line);
                    }
                    if (lines.Count > 0)
                    {
                        outputFile.WriteLine();
                    }
                }
            }
            outputFile.Flush();
        }
    }

如何使用 Team Foundations Git 库来执行与上述代码类似的操作?

【问题讨论】:

  • 您使用的是什么版本的 TFS? TFS 2017 支持代码搜索。
  • 只克隆存储库(使用命令行或使用 LibGit2Sharp 库)并搜索文件(查看磁盘上的内容或 - 再次 - 使用 LibGit2Sharp )。

标签: c# git tfs


【解决方案1】:

有一个 PowerShell 示例来获取 Git 项目,您可以尝试将其转换为 C# 代码。参考这个线程: https://social.msdn.microsoft.com/Forums/office/en-US/ce12ede3-8b14-49de-962a-20e68e0a6d00/how-to-use-microsoftteamfoundationgitclient-in-powershell-script?forum=tfsgeneral

如果您使用的是 TFS 2017,建议您使用Code Search,有关详细信息,请参阅Set up and administer Microsoft Code Search/Work Item Search

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2018-06-20
    • 2016-08-15
    • 2013-02-23
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多