【发布时间】: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 )。