Frage

Ich schreibe einige C # -Code, um mehrere Commits SVN in einem Durchgang durchführen, ähnlich wie das Werkzeug svnmucc. Bisher habe ich gewesen SharpSvn mit dem Rest der notwendigen Kommunikation mit SVN zu tun, also ich denke ich es nutzen kann, um Folgendes zu erreichen:

Wie kann ich die Zugangsdaten erhalten (Benutzername, Passwort), die von SharpSvn verwendet werden?

Ich möchte etwas tun:

using (SvnClient svnClient = new SvnClient())
{
    SomeFictitiousCredentialsClass credentials = svnClient.Authentication.FictitiousGetCachedCredentialsMethod();

    // Call my code that performs svnmucc-like work here, passing username and password
    // obtained from 'credentials' variable.
}
War es hilfreich?

Lösung

SharpSvn keine api haben, dass Sie die Anmeldeinformationen von Subversion zur Verfügung stellt. Es meist implementiert die libsvn_client api, und auf dieser Ebene gibt es keinen Zugriff auf diese Daten.

bekommt SharpSvn einen Rückruf aus den Subversion-Bibliotheken, wenn diese Notwendigkeit Berechtigungsnachweise; in den meisten Fällen nach dem eingebauten Kennwortspeicher kann keine Authentifizierung.

Wenn Ihr svnmucc Code verwendet auch die Subversion-APIs, können Sie einfach Plugin die Authentifizierung Handler Subversion vordefiniert ..

SharpSvn selbst svnmucc Unterstützung hat noch nicht. (Es gab einige Diskussion über jemanden, den als Favoriten markiert zu SharpSvn hinzufügen, aber ich habe keine Nachrichten über diesen in letzter Zeit)

Andere Tipps

Während die andere Antwort für alle aktuellen Versionen von SharpSvn noch gültig ist, hat SvnMucc Unterstützung gerade gelandet in dem Entwicklungscode für SharpSvn. So bald wird es möglich sein SvnMucc wie Operationen von .Net auszuführen.

using SharpSvn;

SvnCommitResult cr;
using (SvnMultiCommandClient mucc = new SvnMultiCommandClient("http://my-repos/svn/"))
{
    mucc.CreateDirectory("trunk");
    mucc.CreateDirectory("branches");
    mucc.CreateDirectory("tags");
    mucc.CreateDirectory("trunk/src");
    mucc.SetProperty("", "svn:auto-props", "*.cs = svn:eol-style=native");
    mucc.SetProperty("", "svn:global-ignores", "bin obj");

    mucc.Commit(out cr); // Commit r1
}
using (SvnClient client = new SvnClient())
{
   client.CheckOut("http://my-repos/svn/", @"C:\wc");
}

Es ist eine etwas andere Syntax zur Verfügung, wenn Sie den Vorgang von einem vorhandenen SvnClient durchführen mögen, aber dies ist die allgemeine Idee.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top