2009-05-05 6 views
3

J'utilise la bibliothèque SharpSvn de CollabNET. Je voudrais définir l'auteur de la révision lors de la validation, mais je me retrouve toujours avec un commit avec mon nom d'utilisateur Windows.Comment définir l'auteur de la validation SVN à l'aide de la bibliothèque SharpSVN dans C#

Cela ne fonctionne pas pour moi:

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

J'ai essayé aussi:

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

Mais je reçois une erreur qui cible (premier argument) est mauvais.

Alors, pourriez-vous me dire comment définir l'utilisateur (auteur) de commit sur subversion repository dans C#?

+0

Vous devez utiliser .SetRevisionProperty() pour modifier les propriétés de révision. –

Répondre

7

Tout dépend de la façon dont vous vous connectez à votre référentiel, car le référentiel est responsable de l'ajout d'un nom d'utilisateur à la révision. (Il copie généralement les informations d'identification pour les connexions, mais il n'a pas à le faire). Lorsque vous utilisez un dépôt: /// (ce qui n'est généralement pas recommandé - voir The Subversion Book), vous pouvez contourner ce problème directement sur le 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); 
} 

Si vous vous connectez à un dépôt distant, vous pouvez modifier l'auteur d'une révision quand un crochet pré-revprop changement est installé dans le référentiel (Voir 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] versions plus récentes de SharpSvn permettent également ceci:

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

ce dernier exemple suppose l'accès aux fichiers dans le référentiel, mais il contourne r crochets de dépôt pour des performances optimales.

Questions connexes