我试图让我的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库?
答案 0 :(得分: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。