Wie Autor von SVN setzen SharpSvn Bibliothek in c # Festschreibung unter Verwendung

StackOverflow https://stackoverflow.com/questions/824386

  •  05-07-2019
  •  | 
  •  

Frage

Ich verwende SharpSvn Bibliothek von CollabNet. Ich möchte Revision Autor setzen, während commiting, aber ich habe immer mit einem commit mit meinen Windows-Benutzername enden.

Dies gilt nicht für mich arbeiten:

System.Net.NetworkCredential oCred = new
    System.Net.NetworkCredential("user"​, "pass");
client.Authentication.DefaultCredentials = oCred;

Ich habe auch versucht:

client.SetProperty("", "svn:author", "user");

Aber ich erhalte eine Fehlermeldung, die (erstes Argument) Ziel ist schlecht.

So könnten Sie mir bitte sagen, wie Benutzer setzen (Autor) von Subversion-Repository in c # begehen?

War es hilfreich?

Lösung

Das hängt alles davon ab, wie Sie mit Ihrem Repository zu verbinden, wie das Repository für das Hinzufügen eines Benutzernamens an die Revision verantwortlich ist. (Es normalerweise kopiert die Berechtigungsnachweise für die Verbindungen aber nicht, das zu tun hat).

Wenn Sie eine Datei: /// Repository (die in der Regel nicht empfohlen wird - Siehe Subversion Buch ) Sie können dieses Problem umgehen direkt auf dem Commit.

using (SvnClient client = new SvnClient())
{
    client.Authentication.Clear(); // Clear predefined handlers

    // Install a custom username handler
    client.Authentication.UserNameHandlers +=
        delegate(object sender, SvnUserNameEventArgs e)
        {
            e.UserName = "MyName";
        };

    SvnCommitArgs ca = new SvnCommitArgs { LogMessage = "Hello" }
    client.Commit(dir, ca);
}

Wenn Sie zu einer Remote-Repository verbinden können Sie den Autor einer Revision ändern, wenn ein Pre-revprop Wechselhaken im Repository installiert ist (siehe Subversion Buch )

using (SvnClient client = new SvnClient())
{
    client.SetRevisionProperty(new Uri("http://my/repository"), 12345,
                              SvnPropertyNames.SvnAuthor,
                              "MyName");

    // Older SharpSvn releases allowed only the now obsolete syntax
    client.SetRevisionProperty(
        new SvnUriTarget(new Uri("http://my/repository"), 12345),
        SvnPropertyNames.SvnAuthor,
        "MyName");

}

[2009-08-14] Neuere SharpSvn Meldungen auch dies zulassen:

using (SvnRepositoryClient rc = new SvnRepositoryClient())
{
   SvnSetRevisionPropertyRepositoryArgs ra;
   ra.CallPreRevPropChangeHook = false;
   ra.CallPostRevPropChangeHook = false;
   rc.SetRevisionProperty(@"C:\Path\To\Repository", 12345,
                         SvnPropertyNames.SvnAuthor, "MyName", ra);
}

Das letzte Beispiel geht davon aus direktem Dateizugriff auf das Repository, aber es umgeht Repository-Hooks für eine optimale Leistung.

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