Cómo configurar el autor de la confirmación SVN usando la biblioteca SharpSVN en c #

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Utilizo la biblioteca SharpSvn de CollabNET. Me gustaría establecer el autor de la revisión mientras cometo, pero siempre termino confirmando mi nombre de usuario de Windows.

Esto no me funciona:

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

He intentado también:

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

Pero recibo un error de que el objetivo (primer argumento) es malo.

Entonces, ¿podría decirme cómo configurar el usuario (autor) de confirmar el repositorio de subversion en c #?

¿Fue útil?

Solución

Todo esto depende de cómo se conecte a su repositorio, ya que el repositorio es responsable de agregar un nombre de usuario a la revisión. (Por lo general, copia las credenciales de las conexiones, pero no tiene que hacerlo).

Cuando usa un archivo: /// repositorio (que generalmente no se recomienda - vea The Subversion Book ) puede solucionar esto directamente en la confirmación.

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 se conecta a un repositorio remoto, puede cambiar el autor de una revisión cuando se instale un enganche anterior a revprop-change en el repositorio (consulte El libro de Subversion )

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] Las versiones más recientes de SharpSvn también permiten esto:

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

Este último ejemplo asume el acceso directo al archivo del repositorio, pero omite los enlaces del repositorio para un rendimiento óptimo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top