Octokit.net Создание нового хранилища
У меня проблема с созданием нового репозитория с Octokit.net.
Это мой код:
public async Task stvoriNovi(FormCollection collection)
{
string name = collection.Get("name");
NewRepository newRepo = new NewRepository(name);
newRepo.AutoInit = true;
var accessToken = Session["OAuthToken"] as string;
if (accessToken != null)
{
client.Credentials = new Credentials(accessToken);
}
await client.Repository.Create(newRepo);
}
Я поставил точки останова и там вижу, что все в порядке. http://prntscr.com/7h62iq который можно увидеть здесь. И когда я позволил программе запустить код для создания нового репозитория, это мой результат: http://prntscr.com/7h63fz Я получаю ctokit.NotFoundException: Not Found. Я перепробовал все, и каждый раз происходит ошибка. Что я делаю неправильно?
2 ответа
Я думаю, что есть внутренняя ошибка в строке 60 при ожидании client.Respository.Create(newRepo); Попробуйте создать клиент с basicAuth, хранилищем с лицензией MIT. И с попыткой поймать, увидеть ошибку. Сообщение, если таковые имеются.
using Octokit;
// Authentification
var basicAuth = new Credentials(Owner, Password);
var Client = new GitHubClient(new ProductHeaderValue("my-cool-app"));
Client.Credentials = basicAuth;
// Create
try {
var repository = new NewRepository(RepositoryName) {
AutoInit = false,
Description = "",
LicenseTemplate = "mit",
Private = false
};
var context = Client.Repository.Create(repository);
RespositoryGitHub = context.Result;
Console.WriteLine($"The respository {RepositoryName} was created.");
} catch (AggregateException e) {
Console.WriteLine($"E: For some reason, the repository {RepositoryName} can't be created. It may already exist. {e.Message}");
}
}
Если хранилище уже существует, вы можете удалить старый. Внимание, этот код определенно удаляет хранилище без подтверждения.
// Remove the previous repository if exists
var contextDelete = Client.Repository.Get(Owner, RepositoryName).Result;
var repositoryID = contextDelete.Id;
var context = Client.Repository.Delete(repositoryID);
Console.WriteLine($"The respository {RepositoryName} was deleted.");
Я бы немного изменил ответ @pushStack, Repository.Create
асинхронный, поэтому должен быть запущен как задача:
private void OctoKitRepositoryCreation(string sUsername, string sPassword, string sRepoName)
{
// Authentification
var basicAuth = new Credentials(sUsername, sPassword);
var Client = new GitHubClient(new ProductHeaderValue("my-cool-app"));
Client.Credentials = basicAuth;
// Create
try
{
var repository = new NewRepository(sRepoName)
{
AutoInit = false,
Description = "",
LicenseTemplate = "mit",
Private = true
};
var newRepository = System.Threading.Tasks.Task.Run(async () => await Client.Repository.Create(repository)).GetAwaiter().GetResult();
Console.WriteLine("The respository {0} was created.", newRepository.FullName);
}
catch (AggregateException e)
{
Console.WriteLine("Error occured. {0}", e.Message);
}
}