2 Stimmen

Wie man mit SharpSVN auf Dateiinformationen in einem Pre-Commit-Hook zugreift

Ich bin neu in SharpSVN und SVN im Allgemeinen. Ich versuche, eine Pre-Commit-Hook zu implementieren, dass, wenn der Benutzer eine bestimmte Art von XML-Datei überträgt; Ich werde brauchen, um die Datei abzufangen und zu analysieren, um sicherzustellen, dass sie bestimmte Elemente enthalten, bevor ich die Datei übertragen werden.

Da es scheint, dass SVN zwei Argumente übergibt, den Repository-Pfad und die Transaktion, muss ich diese beiden Elemente verwenden, um die Datei abzufangen. Weiß jemand, was ich in SharpSVN verwenden muss, um Dateiinformationen basierend auf diesen beiden Parametern zu erhalten?

Danke! Floh#

3voto

Sander Rijken Punkte 21069

Sie können dies tun, indem Sie das eingebaute SvnLookClient .

Um dies zu nutzen, benötigen Sie zunächst eine SvnLookOrigin . SharpSvn enthält ein Standard-Argument-Parsing, das "weiß", welche Argumente an jeden Hook-Typ übergeben werden. Dies ermöglicht Ihnen den Zugriff auf diese SvnLookOrigin :

SvnHookArguments ha; 
if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PreCommit, false, out ha))
{
    Console.Error.WriteLine("Invalid arguments");
    Environment.Exit(1);  
}

Abrufen der geänderten Dateien und des Inhalts dieser Dateien auf der Grundlage der geparsten Argumente

using (SvnLookClient cl = new SvnLookClient())
{
    Collection<SvnChangedEventArgs> changedItems;
    cl.GetChanged(ha.LookOrigin, out changedItems);

    foreach(var item in changedItems)
    {
        if(!IsXmlFile(item)) continue;

        using(MemoryStream ms = new MemoryStream())
        {
            cl.Write(ha.LookOrigin, item.Path, stream);

            VerifyXMLStream(stream);
        }
    }
}

Editar : Schreiben Sie an Console.Error y Environment.Exit(1) um Fehler zu melden (exit non-null).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X