2016-10-14 1 views
0

Mit SharpSVN Ich kann eine SVN-Checkout programmgesteuert in C# zurücksetzen, aber jetzt muss ich eine Patch/Diff-Datei erstellen, kurz bevor die Zurücksetzung ausgeführt wird.Programmatisches Erstellen einer SVN-Patch/Diff-Datei in C#

SharpSVN hat die SvnClient.Patch-API, aber docs/intellisense gibt an, dass dies zum Anwenden eines Patches auf ein Repo dient, während ich das Äquivalent zum Erstellen der Patch-Datei an erster Stelle benötige.

Wie kann ich programmatisch eine SVN-Patch-Datei in C# erstellen?

Antwort

0

Um eine Patch-Datei aus SVN zu erstellen, können Sie auch eine "Unified Diff" -Datei über mehrere Revisionen hinweg erstellen. Der folgende Code basiert auf demselben. Es erstellt eine vereinheitlichte Diff-Datei der Änderungen, die über die angegebenen Revisionen hinweg durchgeführt wurden.

   System.Uri uri = new System.Uri("your url path"); 

       using (SvnClient client = new SvnClient()) 
       { 
        SvnUriTarget from = new SvnUriTarget(uri); 

        // To Get the Latest Revision on the Required SVN Folder 
        SvnInfoEventArgs info; 
        client.GetInfo(uri, out info); 
        SvnRevisionRange range = new SvnRevisionRange(info.Revision - 10, info.Revision); // The given input revisions should be valid revisions on the selected Repo path 

        System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
        if (client.Diff(from, range, stream)) 
        { 
         stream.Position = 0; //reset the stream position to zero, as the stream position returned from Diff method is at the end. 
         System.IO.File.AppendAllText(@"C:\diffFile.patch", new System.IO.StreamReader(stream).ReadToEnd()); 
        } 

        stream.Close(); 

       } 
Verwandte Themen