Вопрос

Я пишу некоторый код на 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.
}
Это было полезно?

Решение

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top