Учитывая комбинацию пользователя и пароля, я хочу определить, что это приведет к действительному UsernamePasswordCredentials
для известного удаленного git сервера.
В идеале я хотел бы иметь возможность делать это независимо от произошла ли локальная проверка.
Я пробовал вот что. У меня есть класс со следующими методами
private CredentialsHandler UserPassCredentialsProvider
{
get
{
if (_gitPass == null)
throw new System.Exception("No git Credentials have been supplied");
var credentials = new UsernamePasswordCredentials()
{
Username = _gitUser,
Password = _gitPass
};
return (_url, _usr, _cred) => credentials;
}
}
public bool CheckCredentials()
{
try
{
using (var repo = new Repository(Path.Combine(WorkingCopyRoot, "MyRepo")))
{
IEnumerable<Reference> refs = Repository.ListRemoteReferences(Path.Combine(WorkingCopyRoot, "MyRepo"), UserPassCredentialsProvider);
return refs != null;
}
}
catch(Exception ex)
{
return false;
}
}
Это всего лишь код, который у меня есть на момент написания - я уже некоторое время занимаюсь этим, однако, ListRemoteReferences()
, похоже, работает в равной степени с действующим паролем или без него.
Непросто добиться того, чего я хочу - есть ли какие-нибудь предложения?