Sharpsvn diff方法不起作用

时间:2009-12-18 06:02:55

标签: .net sharpsvn

我正在尝试使用sharpsvn实现diff方法。我的代码片段如下

private void Diff(string pSourcePath)
{
        Uri UriSCPath = new Uri(pstrSourcePath);
        SvnClient DPISVN_Clnt = new SvnClient();

         DPISVN_Clnt.Authentication.DefaultCredentials = new NetworkCredential("Biju","Biju");
        try
        {
            SvnRevisionRange objSvnRevisionRange=new SvnRevisionRange (17157,17161);
            Stream stream=null;
            MemoryStream objMemoryStream = new MemoryStream();
            bool b = DPISVN_Clnt.Diff(pstrSourcePath, objSvnRevisionRange, objMemoryStream);

           StreamReader strReader = new StreamReader(objMemoryStream);
            string str = strReader.ReadToEnd();
}

我的第一个问题是Diff方法总是在我的程序中返回true。我改变了我的revison范围而不是它返回true。

我的第二个问题是在diff方法中有一个输入参数名称Stream result.I认为它包含结果流信息。当我尝试使用streamreader读取结果流的内容时,它返回空字符串。但是我的修改范围不同,我的源文件中存在一些差异。

使用流的方式是否相同?

1 个答案:

答案 0 :(得分:5)

正如itowlson在评论中已经回答的那样,SharpSvn将差异写入流中。所以当函数返回时,你就在写的差异之后。

并且.ReadToEnd()读取从当前位置到结束的所有内容,这很可能都没有。

使用

stream.Position = 0;
在创建StreamReader之前

(或Seek)应该有所帮助。

这将为您提供统一的差异。如果您确实需要该文件的两个版本(自己执行差异),则可以使用单独目标的SvnClient.Write()