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

本文关键字:读取 文件 存储 SVN | 更新日期: 2023-09-27 18:24:36

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

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

SvnClient.Write与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
        }
    }
}

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