我正在尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是Diff方法总是在我的程序中返回true.我改变了我的revison范围而不是它返回true.
我的第二个问题是在diff方法中有一个输入参数名称Stream result.I认为它包含结果流信息.当我尝试使用streamreader读取结果流的内容时,它返回空字符串.但是我的修改范围不同,我的源文件中存在一些差异.
使用流是一样的方法吗?
正如itowlson在评论中已经回答的那样,SharpSvn将差异写入流中.所以当函数返回时,你就在写的差异之后.
并且.ReadToEnd()读取从当前位置到结束的所有内容,这很可能没什么.
用一个
stream.Position = 0;
Run Code Online (Sandbox Code Playgroud)
(或Seek)在创建StreamReaders之前应该有所帮助.
这将为您提供统一的差异.如果您确实需要该文件的两个版本(自己执行diff),则可以使用SvnClient.Write()单独的目标.
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |