我想编写一个应用程序,它从SVN存储库的特定路径下的所有文本文件中查找字符串标记,并返回包含此标记的所有文件。我在这个应用程序中使用了sharpsvn。我知道如何在根SVN存储库路径(当然还有它的子文件夹)下获取所有文件的路径,但是我想知道是否有办法直接从SVN存储库读取每个文件的内容而无需签出或导出它们到运行我的应用程序的计算机? 如果没有这种直接从存储库中读取内容的方法,那么为什么要在所有文件中找到特定的令牌,你如何建议我顺利地检出或导出文件?
答案 0 :(得分:1)
将SvnClient.Write
与网址目标一起使用,并从MemoryStream
:
using (var stream = new MemoryStream())
using (SvnClient client = new SvnClient())
{
string yourUrl = "http://svn.apache.org/repos/asf/subversion/trunk/CHANGES";
if (client.Write(new SvnUriTarget(yourUrl), stream))
{
// reset the position to read from the beginning
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
string contents = reader.ReadToEnd();
// find your token
}
}
}
请注意,这不会非常快,因为它会为每个文件打开与服务器的新连接。