2009-05-05 12 views
3

Ich verwende SharpSvn-Bibliothek von CollabNET. Ich möchte Revision Autor beim Commit festlegen, aber ich habe immer eine Commit mit meinem Windows-Benutzernamen.Autor des SVN-Commits mit SharpSVN-Bibliothek in C#

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.

Könnten Sie mir bitte sagen, wie man den Benutzer (Autor) des Commits zum Subversion-Repository in C# setzt?

+0

Sie sollten .SetRevisionProperty() zum Ändern der Revisionseigenschaften verwenden. –

Antwort

7

Dies hängt davon ab, wie Sie eine Verbindung zu Ihrem Repository herstellen, da das Repository dafür verantwortlich ist, der Revision einen Benutzernamen hinzuzufügen. (Normalerweise kopiert es die Anmeldeinformationen für die Verbindungen, muss dies jedoch nicht tun).

Wenn Sie ein file: /// Repository verwenden (was normalerweise nicht empfohlen wird - siehe), können Sie dies direkt beim Commit umgehen.

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 The Subversion Book)

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 Versionen erlauben auch diese:

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

Dieses letzte Beispiel den direkten Dateizugriff auf das Repository übernimmt, aber es umgeht r Repository-Hooks für optimale Leistung.

Verwandte Themen