Pergunta

Eu uso biblioteca SharpSvn da CollabNet. Gostaria de set autor de revisão, enquanto cometer, mas eu sempre acabar com um commit com o meu nome de usuário do Windows.

Isto não funciona para mim:

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

Eu tentei também:

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

Mas eu recebo um erro que alvo (primeiro argumento) é ruim.

Então, você poderia por favor me dizer como usuário set (autor) de cometer a subversão repositório no c #?

Foi útil?

Solução

Isso tudo depende de como você se conectar ao seu repositório, como o repositório é responsável por adicionar um nome de usuário para a revisão. (Ele geralmente copia as credenciais para as conexões, mas ele não tem que fazer isso).

Quando você usa um file: /// repositório (que geralmente não é recomendado - Veja O Subversion Livro ), você pode contornar esse diretamente no cometer.

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);
}

Se você se conectar a um repositório remoto, você pode mudar o autor de uma revisão quando um gancho pre-revprop-change é instalado no repositório (Veja O Subversion Livro )

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] Mais recentes lançamentos SharpSvn também permitem que isso:

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 exemplo assume acesso direto aos arquivos para o repositório, mas ele ignora ganchos de repositório para um ótimo desempenho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top