Pergunta

Estou escrevendo algum código C# para executar várias confirmações com o SVN em uma passagem, bem como a ferramenta svnmucc. Até agora, tenho usado o Sharpsvn para fazer o restante da comunicação necessária com o SVN, então estou pensando que posso aproveitar isso para realizar o seguinte:

Como posso obter as credenciais (nome de usuário, senha) que são usadas pelo Sharpsvn?

Eu gostaria de fazer algo assim:

using (SvnClient svnClient = new SvnClient())
{
    SomeFictitiousCredentialsClass credentials = svnClient.Authentication.FictitiousGetCachedCredentialsMethod();

    // Call my code that performs svnmucc-like work here, passing username and password
    // obtained from 'credentials' variable.
}
Foi útil?

Solução

O SharpsVN não possui uma API que fornece as credenciais da subversão. Ele implementa principalmente a API libsvn_client e, nesse nível, não há acesso a esses dados.

SharpsVn recebe um retorno de chamada das bibliotecas de subversão quando essas necessidades de credenciais; Na maioria dos casos, após o armazenamento de senha incorporado falha em autenticar.

Se o seu código SVNMUCC também usar as APIs de subversão, basta plugin os manipuladores de autenticação predefinidos por subversão.

O próprio Sharpsvn ainda não possui suporte ao SVNMUCC. (Houve alguma conversa sobre alguém que gostava de adicionar isso ao Sharpsvn, mas não tenho notícias sobre isso ultimamente)

Outras dicas

Embora a outra resposta ainda seja válida para todas as versões atuais do SharpsVN, o suporte ao SVNMUCC acaba de chegar ao código de desenvolvimento da SharpsVN. Assim, será possível executar operações do SVNMUCC no .NET.

using SharpSvn;

SvnCommitResult cr;
using (SvnMultiCommandClient mucc = new SvnMultiCommandClient("http://my-repos/svn/"))
{
    mucc.CreateDirectory("trunk");
    mucc.CreateDirectory("branches");
    mucc.CreateDirectory("tags");
    mucc.CreateDirectory("trunk/src");
    mucc.SetProperty("", "svn:auto-props", "*.cs = svn:eol-style=native");
    mucc.SetProperty("", "svn:global-ignores", "bin obj");

    mucc.Commit(out cr); // Commit r1
}
using (SvnClient client = new SvnClient())
{
   client.CheckOut("http://my-repos/svn/", @"C:\wc");
}

Há uma sintaxe ligeiramente diferente disponível se você deseja executar a operação de um SVNCLIENT existente, mas essa é a ideia geral.

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