Получить учетные данные от SharpSvn в C # - PullRequest
2 голосов
/ 06 октября 2009

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

Как я могу получить учетные данные (имя пользователя, пароль), которые используются 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.
}

Ответы [ 2 ]

1 голос
/ 07 октября 2009

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

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

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

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

0 голосов
/ 16 декабря 2013

Хотя другой ответ остается действительным для всех текущих версий 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, но это общая идея.

...