2009-10-06 3 views
2

Я пишу код C# для выполнения нескольких коммитов в SVN за один проход, как инструмент svnmucc. До сих пор я использовал SharpSvn для выполнения всей необходимой связи с SVN, поэтому я думаю, что смогу воспользоваться этим, чтобы выполнить следующее:Получить учетные данные от SharpSvn в C#

Как получить учетные данные (имя пользователя, пароль) которые используются SharpSvn?

Я хотел бы сделать что-то вроде этого:

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. 
} 

ответ

1

Sharpsvn не имеет API, который предоставляет вам учетные данные из Subversion. В основном он реализует libsvn_client api, и на этом уровне нет доступа к этим данным.

SharpSvn получает обратный вызов из библиотек subversion, когда им нужны учетные данные; в большинстве случаев после невозможности аутентификации встроенного хранилища паролей.

Если ваш код svnmucc также использует Subversion APIs, вы можете просто плагин подрыву предопределенные обработчики аутентификации ..

сам SharpSvn не поддерживает svnmucc еще. (Был разговор о ком-то, кто любил добавлять это в SharpSvn, но в последнее время у меня нет новостей)

0

Пока другой ответ по-прежнему действует для всех текущих версий SharpSvn, поддержка SvnMucc только что приземлилась в коде разработки для SharpSvn. Так скоро будет возможно выполнить SvnMucc как операции из .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"); 
} 

Существует немного другой синтаксис доступен, если вы хотите, чтобы выполнить операцию из существующего SvnClient, но это общая идея.