Comment définir l'auteur de la validation SVN à l'aide de la bibliothèque SharpSVN en c #

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

  •  05-07-2019
  •  | 
  •  

Question

J'utilise la bibliothèque SharpSvn de CollabNET. Je voudrais définir l'auteur de la révision lors de la validation, mais je finis toujours par une validation avec mon nom d'utilisateur Windows.

Cela ne fonctionne pas pour moi:

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

J'ai aussi essayé:

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

Mais j'obtiens une erreur en disant que la cible (premier argument) est mauvaise.

Alors, pourriez-vous s'il vous plaît me dire comment définir l'utilisateur (auteur) de commettre dans le référentiel Subversion en c #?

Était-ce utile?

La solution

Tout dépend de la façon dont vous vous connectez à votre référentiel, car ce dernier est responsable de l'ajout d'un nom d'utilisateur à la révision. (Il copie généralement les informations d'identification des connexions, mais ce n'est pas obligatoire).

Lorsque vous utilisez un référentiel file: /// (ce qui n'est généralement pas recommandé - voir Le livre Subversion ) 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 référentiel distant, vous pouvez changer l'auteur d'une révision lorsqu'un hook pré-revprop-change est installé dans le référentiel (voir Le livre de sous-version )

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] Les 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 un accès direct au référentiel via un fichier, mais il contourne les crochets du référentiel pour optimiser les performances.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top