C# 直接从SVN存储库读取文件内容

C# 直接从SVN存储库读取文件内容,c#,.net,svn,sharpsvn,C#,.net,Svn,Sharpsvn,我想编写一个应用程序,从SVN存储库的特定路径下的所有文本文件中的字符串标记进行查看,并返回包含此标记的所有文件。我使用sharpsvn进行此应用程序。我知道如何获取根SVN存储库路径下所有文件的路径(当然还有它的子文件夹),但我想知道是否有方法可以直接从SVN存储库读取每个文件的内容,而无需签出或将其导出到运行应用程序的计算机? 如果没有直接从存储库读取内容的方法,您建议我如何顺利签出或导出文件,以便在所有文件中找到特定标记?与URL目标一起使用,并从MemoryStream读取字符串: us

我想编写一个应用程序,从SVN存储库的特定路径下的所有文本文件中的字符串标记进行查看,并返回包含此标记的所有文件。我使用sharpsvn进行此应用程序。我知道如何获取根SVN存储库路径下所有文件的路径(当然还有它的子文件夹),但我想知道是否有方法可以直接从SVN存储库读取每个文件的内容,而无需签出或将其导出到运行应用程序的计算机? 如果没有直接从存储库读取内容的方法,您建议我如何顺利签出或导出文件,以便在所有文件中找到特定标记?

与URL目标一起使用,并从
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
        }
    }
}

请注意,这不会太快,因为它会为每个文件打开到服务器的新连接。

另外,请参阅。简而言之,这不是一个容易解决的问题。确认这一点仍然有效,但会注意到
stream.Position=0是实现此功能的关键。否则,它将返回一个空字符串