0

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を返すことです。また、trueを返すよりもリビジョン範囲を変更しました。

私の2番目の問題は、diffメソッドに入力パラメーター名Streamresultが含まれていることです。結果のストリーム情報が含まれていると思います。streamreaderを使用して結果ストリームの内容を読み取ろうとすると、空の文字列が返されますが、リビジョン範囲が異なり、ソースファイルにいくつかの違いがあります。

ストリームを使用するのと同じ方法ですか?

4

1 に答える 1

5

itowlsonがコメントですでに回答しているように、SharpSvnは差分をストリームに書き込みます。したがって、関数が戻ると、書き込まれた差分のすぐ後ろにいます。

そして.ReadToEnd()、現在の位置から最後まですべてを読み取りますが、これはおそらく何もありません。

を使って

stream.Position = 0;

StreamReadersを作成する前に(またはSeek)が役立つはずです。

これにより、統一された差分が得られます。(自分で差分を実行するために)両方のバージョンのファイルが本当に必要な場合SvnClient.Write()は、別々のターゲットを使用できます。

于 2009-12-18T10:36:10.007 に答える